Generating Card Stacks with Queries on Online Social Networks

ABSTRACT

In one embodiment, a method includes receiving, from a client system of a first user, an input from the first user indicating a query-domain and one or more query-filters, generating a card cluster comprising a plurality of cards referencing a plurality of objects corresponding to the indicated query-domain and one or more query-filters, ranking the plurality of cards based on one or more user-engagement factors, and sending, to the client system in response to the input from the first user, instructions for displaying the card cluster to the first user, the cards of the card cluster being ordered based on the rankings associated with the cards.

PRIORITY

This application is a continuation under 35 U.S.C. § 120 of U.S. patentapplication Ser. No. 14/568,642, filed 12 Dec. 2014, which is acontinuation under 35 U.S.C. § 120 of U.S. patent application Ser. No.14/258,821, filed 22 Apr. 2014, issued as U.S. Pat. No. 8,949,250 on 3Feb. 2015, which claims the benefit under 35 U.S.C. § 119(e), of U.S.Provisional Patent Application No. 61/918,431, filed 19 Dec. 2013, whichis incorporated herein by reference.

TECHNICAL FIELD

This disclosure generally relates to social graphs and performingsearches for objects within a social-networking environment or relatedenvironments.

BACKGROUND

A social-networking system, which may include a social-networkingwebsite, may enable its users (such as persons or organizations) tointeract with it and with each other through it. The social-networkingsystem may, with input from a user, create and store in thesocial-networking system a user profile associated with the user. Theuser profile may include demographic information, communication-channelinformation, and information on personal interests of the user. Thesocial-networking system may also, with input from a user, create andstore a record of relationships of the user with other users of thesocial-networking system, as well as provide services (e.g. wall posts,photo-sharing, event organization, messaging, games, or advertisements)to facilitate social interaction between or among users.

The social-networking system may send over one or more networks contentor messages related to its services to a mobile or other computingdevice of a user. A user may also install software applications on amobile or other computing device of the user for accessing a userprofile of the user and other data within the social-networking system.The social-networking system may generate a personalized set of contentobjects to display to a user, such as a newsfeed of aggregated storiesof other users connected to the user.

Social-graph analysis views social relationships in terms of networktheory consisting of nodes and edges. Nodes represent the individualactors within the networks, and edges represent the relationshipsbetween the actors. The resulting graph-based structures are often verycomplex. There can be many types of nodes and many types of edges forconnecting nodes. In its simplest form, a social graph is a map of allof the relevant edges between all the nodes being studied.

A mobile computing device—such as a smartphone, tablet computer, orlaptop computer—may include functionality for determining its location,direction, or orientation, such as a GPS receiver, compass, orgyroscope. Such a device may also include functionality for wirelesscommunication, such as BLUETOOTH communication, near-field communication(NFC), or infrared (IR) communication or communication with a wirelesslocal area networks (WLANs) or cellular-telephone network. Such a devicemay also include one or more cameras, scanners, touchscreens,microphones, or speakers. Mobile computing devices may also executesoftware applications, such as games, web browsers, or social-networkingapplications. With social-networking applications, users may connect,communicate, and share information with other users in their socialnetworks.

SUMMARY OF PARTICULAR EMBODIMENTS

In particular embodiments, a social-networking system may generatestructured queries that include references to particular social-graphelements. These structured queries may be generated, for example, inresponse to a text query provided by a user, or generated as defaultqueries. By providing suggested structured queries to a user's textquery, the social-networking system may provide a powerful way for usersof an online social network to search for elements represented in asocial graph based on their social-graph attributes and their relationto various social-graph elements.

In particular embodiments, the card stack may be visual model indicatingwhich applications or content of an application are being executed on acomputing device. The card stack may have a card that is analogous tothe launcher that displays all applications installed on the computingdevice. In particular embodiments, the user may access the cardcorresponding to the launcher by performing a gesture, such as forexample swiping down from top, or pressing the “home” button of thecomputing device. Applications executed on the computing device orcontent of the applications (e.g. profile page of a user on a socialnetwork or tab of a web browser) may be displayed as a card stackedabove the launcher card. In particular embodiments, the cards of thecard stack may be ordered chronologically with the most recentlyexecuted applications being higher in the card stack. Each card may beaccessed by swiping up on an exposed edge of the card or pulling down onthe exposed edge of card depending on how the cards are stacked on thescreen.

In particular embodiments, the social-networking system may generating“cards” with recommended queries and query filters using signals thatmay provide clues to the interests, preferences, or tastes of a givenuser. The social network may provide a user interface comprising one ormore cards for display to the user. The idea is to generate cards thatwill be of interest of the user, and will cause the user to engage orfurther explore the social-networking system or other systems (e.g.,systems associated with particular advertisers or other third-partysystems). This may be particularly useful in the mobile context (e.g.,bored users that want to go on FB mobile and explore cards). Each cardmay represent a particular domain (places, people, photos, etc.), with arecommended query associated with the card. One or more query filtersmay be applied to the recommended query of a card. For example, aplaces-card may have the filter options [location] [type] [sub-type][hours], which could be selected as [“Palo Alto”] [“restaurants”][“Chinese cuisine”] [“open now”]. Some of the filters may be referencesto particular social-graph entities (e.g., like structured queries ofobjects within or without the social network), and some filters may bewith respect to particular meta-data or object attributes.

In particular embodiments, the social-networking system may rank “cards”based on particular domains or filters associated with the cards. Thesocial network may provide a user interface comprising one or more cardsranked in a way that is suitable for each user. The idea is to rankcards such that the most interesting cards will be presented to a user,causing the user to engage and further explore the social network. Eachcard may represent a particular domain (places, people, photos, etc.)with a recommended query (e.g., Graph Search query) and one or morefilters to modify the query. Note that cards could be presented in anysuitable manner, including as notifications, newsfeed stories, suggestednull state queries, in a standalone application, on a home screen of aclient system, or any other suitable way.

In particular embodiments, the social-networking system may cluster“hunch cards” based on affinity of the user to particular domains orfilters associated with the cards. Each card may represent a particulardomain (places, people, photos, etc.) with a recommended query (e.g.,Graph Search query) and one or more filters to modify the query. Thesystem may modify the filters on the card based on input/actions fromthe user. In other words, the user may navigate through cards to seecards with different filters. For example, swiping a card may revealoptions to apply additional filters, or may show cards with variationsof the recommended query on the prior card. The system may cluster cardsin a way that is customized for each user by determining a card-to-cardaffinity and then clustering cards together based on this determinedaffinity. The goal is to cluster cards of interest to the user in a waythat encourages the user to engage with or further explore the socialnetwork. By clustering cards that are related to each other, users maybe presented with a more enjoyable card browsing experience.

The embodiments disclosed above are only examples, and the scope of thisdisclosure is not limited to them. Particular embodiments may includeall, some, or none of the components, elements, features, functions,operations, or steps of the embodiments disclosed above.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example network environment associated with asocial-networking system.

FIG. 2 illustrates an example social graph.

FIG. 3 illustrates an example mobile client system.

FIG. 4 illustrates an example card-stack interface.

FIG. 5 illustrates an example page of an online social network.

FIG. 6 illustrates example modules to generate example cards.

FIG. 7 illustrates an example method for generating cards for a user.

FIG. 8 illustrates an example wireframe of an example card interface onan example mobile client system.

FIG. 9 illustrates an example method for ranking cards.

FIG. 10 illustrates an example grouping of example card clusters.

FIG. 11 illustrates an example method for generating a card cluster.

FIG. 12 illustrates an example computer system.

DESCRIPTION OF EXAMPLE EMBODIMENTS

System Overview

FIG. 1 illustrates an example network environment 100 associated with asocial-networking system. Network environment 100 includes a clientsystem 130, a social-networking system 160, and a third-party system 170connected to each other by a network 110. Although FIG. 1 illustrates aparticular arrangement of client system 130, social-networking system160, third-party system 170, and network 110, this disclosurecontemplates any suitable arrangement of client system 130,social-networking system 160, third-party system 170, and network 110.As an example and not by way of limitation, two or more of client system130, social-networking system 160, and third-party system 170 may beconnected to each other directly, bypassing network 110. As anotherexample, two or more of client system 130, social-networking system 160,and third-party system 170 may be physically or logically co-locatedwith each other in whole or in part. Moreover, although FIG. 1illustrates a particular number of client systems 130, social-networkingsystems 160, third-party systems 170, and networks 110, this disclosurecontemplates any suitable number of client systems 130,social-networking systems 160, third-party systems 170, and networks110. As an example and not by way of limitation, network environment 100may include multiple client system 130, social-networking systems 160,third-party systems 170, and networks 110.

This disclosure contemplates any suitable network 110. As an example andnot by way of limitation, one or more portions of network 110 mayinclude an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), a portion of the Internet, a portion of the Public SwitchedTelephone Network (PSTN), a cellular telephone network, or a combinationof two or more of these. Network 110 may include one or more networks110.

Links 150 may connect client system 130, social-networking system 160,and third-party system 170 to communication network 110 or to eachother. This disclosure contemplates any suitable links 150. Inparticular embodiments, one or more links 150 include one or morewireline (such as for example Digital Subscriber Line (DSL) or Data OverCable Service Interface Specification (DOCSIS)), wireless (such as forexample Wi-Fi or Worldwide Interoperability for Microwave Access(WiMAX)), or optical (such as for example Synchronous Optical Network(SONET) or Synchronous Digital Hierarchy (SDH)) links. In particularembodiments, one or more links 150 each include an ad hoc network, anintranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, aportion of the Internet, a portion of the PSTN, a cellulartechnology-based network, a satellite communications technology-basednetwork, another link 150, or a combination of two or more such links150. Links 150 need not necessarily be the same throughout networkenvironment 100. One or more first links 150 may differ in one or morerespects from one or more second links 150.

In particular embodiments, client system 130 may be an electronic deviceincluding hardware, software, or embedded logic components or acombination of two or more such components and capable of carrying outthe appropriate functionalities implemented or supported by clientsystem 130. As an example and not by way of limitation, a client system130 may include a computer system such as a desktop computer, notebookor laptop computer, netbook, a tablet computer, e-book reader, GPSdevice, camera, personal digital assistant (PDA), handheld electronicdevice, cellular telephone, smartphone, other suitable electronicdevice, or any suitable combination thereof. This disclosurecontemplates any suitable client systems 130. A client system 130 mayenable a network user at client system 130 to access network 110. Aclient system 130 may enable its user to communicate with other users atother client systems 130.

In particular embodiments, client system 130 may include a web browser132, such as MICROSOFT INTERNET EXPLORER, GOOGLE CHROME or MOZILLAFIREFOX, and may have one or more add-ons, plug-ins, or otherextensions, such as TOOLBAR or YAHOO TOOLBAR. A user at client system130 may enter a Uniform Resource Locator (URL) or other addressdirecting the web browser 132 to a particular server (such as server162, or a server associated with a third-party system 170), and the webbrowser 132 may generate a Hyper Text Transfer Protocol (HTTP) requestand communicate the HTTP request to server. The server may accept theHTTP request and communicate to client system 130 one or more Hyper TextMarkup Language (HTML) files responsive to the HTTP request. Clientsystem 130 may render a webpage based on the HTML files from the serverfor presentation to the user. This disclosure contemplates any suitablepage files, including webpages or pages presented as a user interface ofa native application. As an example and not by way of limitation,webpages may render from HTML files, Extensible Hyper Text MarkupLanguage (XHTML) files, or Extensible Markup Language (XML) files,according to particular needs. Such pages may also execute scripts suchas, for example and without limitation, those written in JAVASCRIPT,JAVA, MICROSOFT SILVERLIGHT, combinations of markup language and scriptssuch as AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein,reference to a webpage encompasses one or more corresponding webpagefiles (which a browser may use to render the webpage) and vice versa,where appropriate.

In particular embodiments, social-networking system 160 may be anetwork-addressable computing system that can host an online socialnetwork. Social-networking system 160 may generate, store, receive, andsend social-networking data, such as, for example, user-profile data,concept-profile data, social-graph information, or other suitable datarelated to the online social network. Social-networking system 160 maybe accessed by the other components of network environment 100 eitherdirectly or via network 110. In particular embodiments,social-networking system 160 may include one or more servers 162. Eachserver 162 may be a unitary server or a distributed server spanningmultiple computers or multiple datacenters. Servers 162 may be ofvarious types, such as, for example and without limitation, web server,news server, mail server, message server, advertising server, fileserver, application server, exchange server, database server, proxyserver, another server suitable for performing functions or processesdescribed herein, or any combination thereof. In particular embodiments,each server 162 may include hardware, software, or embedded logiccomponents or a combination of two or more such components for carryingout the appropriate functionalities implemented or supported by server162. In particular embodiments, social-networking system 160 may includeone or more data stores 164. Data stores 164 may be used to storevarious types of information. In particular embodiments, the informationstored in data stores 164 may be organized according to specific datastructures. In particular embodiments, each data store 164 may be arelational database. Particular embodiments may provide interfaces thatenable a client system 130, a social-networking system 160, or athird-party system 170 to manage, retrieve, modify, add, or delete, theinformation stored in data store 164.

In particular embodiments, social-networking system 160 may store one ormore social graphs in one or more data stores 164. In particularembodiments, a social graph may include multiple nodes—which may includemultiple user nodes (each corresponding to a particular user) ormultiple concept nodes (each corresponding to a particular concept)—andmultiple edges connecting the nodes. Social-networking system 160 mayprovide users of the online social network the ability to communicateand interact with other users. In particular embodiments, users may jointhe online social network via social-networking system 160 and then addconnections (i.e., relationships) to a number of other users ofsocial-networking system 160 whom they want to be connected to. Herein,the term “friend” may refer to any other user of social-networkingsystem 160 with whom a user has formed a connection, association, orrelationship via social-networking system 160.

In particular embodiments, social-networking system 160 may provideusers with the ability to take actions on various types of items orobjects, supported by social-networking system 160. As an example andnot by way of limitation, the items and objects may include groups orsocial networks to which users of social-networking system 160 maybelong, events or calendar entries in which a user might be interested,computer-based applications that a user may use, transactions that allowusers to buy or sell items via the service, interactions withadvertisements that a user may perform, or other suitable items orobjects. A user may interact with anything that is capable of beingrepresented in social-networking system 160 or by an external system ofthird-party system 170, which is separate from social-networking system160 and coupled to social-networking system 160 via a network 110.

In particular embodiments, social-networking system 160 may be capableof linking a variety of entities. As an example and not by way oflimitation, social-networking system 160 may enable users to interactwith each other as well as receive content from third-party systems 170or other entities, or to allow users to interact with these entitiesthrough an application programming interfaces (API) or othercommunication channels.

In particular embodiments, a third-party system 170 may include one ormore types of servers, one or more data stores, one or more interfaces,including but not limited to APIs, one or more web services, one or morecontent sources, one or more networks, or any other suitable components,e.g., that servers may communicate with. A third-party system 170 may beoperated by a different entity from an entity operatingsocial-networking system 160. In particular embodiments, however,social-networking system 160 and third-party systems 170 may operate inconjunction with each other to provide social-networking services tousers of social-networking system 160 or third-party systems 170. Inthis sense, social-networking system 160 may provide a platform, orbackbone, which other systems, such as third-party systems 170, may useto provide social-networking services and functionality to users acrossthe Internet.

In particular embodiments, a third-party system 170 may include athird-party content object provider. A third-party content objectprovider may include one or more sources of content objects, which maybe communicated to a client system 130. As an example and not by way oflimitation, content objects may include information regarding things oractivities of interest to the user, such as, for example, movie showtimes, movie reviews, restaurant reviews, restaurant menus, productinformation and reviews, or other suitable information. As anotherexample and not by way of limitation, content objects may includeincentive content objects, such as coupons, discount tickets, giftcertificates, or other suitable incentive objects.

In particular embodiments, social-networking system 160 also includesuser-generated content objects, which may enhance a user's interactionswith social-networking system 160. User-generated content may includeanything a user can add, upload, send, or “post” to social-networkingsystem 160. As an example and not by way of limitation, a usercommunicates posts to social-networking system 160 from a client system130. Posts may include data such as status updates or other textualdata, location information, photos, videos, links, music or othersimilar data or media. Content may also be added to social-networkingsystem 160 by a third-party through a “communication channel,” such as anewsfeed or stream.

In particular embodiments, social-networking system 160 may include avariety of servers, sub-systems, programs, modules, logs, and datastores. In particular embodiments, social-networking system 160 mayinclude one or more of the following: a web server, action logger,API-request server, relevance-and-ranking engine, content-objectclassifier, notification controller, action log,third-party-content-object-exposure log, inference module,authorization/privacy server, search module, ad-targeting module,user-interface module, user-profile store, connection store, third-partycontent store, or location store. Social-networking system 160 may alsoinclude suitable components such as network interfaces, securitymechanisms, load balancers, failover servers,management-and-network-operations consoles, other suitable components,or any suitable combination thereof. In particular embodiments,social-networking system 160 may include one or more user-profile storesfor storing user profiles. A user profile may include, for example,biographic information, demographic information, behavioral information,social information, or other types of descriptive information, such aswork experience, educational history, hobbies or preferences, interests,affinities, or location. Interest information may include interestsrelated to one or more categories. Categories may be general orspecific. As an example and not by way of limitation, if a user “likes”an article about a brand of shoes the category may be the brand, or thegeneral category of “shoes” or “clothing.” A connection store may beused for storing connection information about users. The connectioninformation may indicate users who have similar or common workexperience, group memberships, hobbies, educational history, or are inany way related or share common attributes. The connection informationmay also include user-defined connections between different users andcontent (both internal and external). A web server may be used forlinking social-networking system 160 to one or more client systems 130or one or more third-party system 170 via network 110. The web servermay include a mail server or other messaging functionality for receivingand routing messages between social-networking system 160 and one ormore client systems 130. An API-request server may allow a third-partysystem 170 to access information from social-networking system 160 bycalling one or more APIs. An action logger may be used to receivecommunications from a web server about a user's actions on or offsocial-networking system 160. In conjunction with the action log, athird-party-content-object log may be maintained of user exposures tothird-party-content objects. A notification controller may provideinformation regarding content objects to a client system 130.Information may be pushed to a client system 130 as notifications, orinformation may be pulled from client system 130 responsive to a requestreceived from client system 130. Authorization servers may be used toenforce one or more privacy settings of the users of social-networkingsystem 160. A privacy setting of a user determines how particularinformation associated with a user can be shared. The authorizationserver may allow users to opt in or opt out of having their actionslogged by social-networking system 160 or shared with other systems(e.g., third-party system 170), such as, for example, by settingappropriate privacy settings. Third-party-content-object stores may beused to store content objects received from third parties, such as athird-party system 170. Location stores may be used for storing locationinformation received from client systems 130 associated with users.Ad-pricing modules may combine social information, the current time,location information, or other suitable information to provide relevantadvertisements, in the form of notifications, to a user.

Social Graphs

FIG. 2 illustrates example social graph 200. In particular embodiments,social-networking system 160 may store one or more social graphs 200 inone or more data stores. In particular embodiments, social graph 200 mayinclude multiple nodes—which may include multiple user nodes 202 ormultiple concept nodes 204—and multiple edges 206 connecting the nodes.Example social graph 200 illustrated in FIG. 2 is shown, for didacticpurposes, in a two-dimensional visual map representation. In particularembodiments, a social-networking system 160, client system 130, orthird-party system 170 may access social graph 200 and relatedsocial-graph information for suitable applications. The nodes and edgesof social graph 200 may be stored as data objects, for example, in adata store (such as a social-graph database). Such a data store mayinclude one or more searchable or queryable indexes of nodes or edges ofsocial graph 200.

In particular embodiments, a user node 202 may correspond to a user ofsocial-networking system 160. As an example and not by way oflimitation, a user may be an individual (human user), an entity (e.g.,an enterprise, business, or third-party application), or a group (e.g.,of individuals or entities) that interacts or communicates with or oversocial-networking system 160. In particular embodiments, when a userregisters for an account with social-networking system 160,social-networking system 160 may create a user node 202 corresponding tothe user, and store the user node 202 in one or more data stores. Usersand user nodes 202 described herein may, where appropriate, refer toregistered users and user nodes 202 associated with registered users. Inaddition or as an alternative, users and user nodes 202 described hereinmay, where appropriate, refer to users that have not registered withsocial-networking system 160. In particular embodiments, a user node 202may be associated with information provided by a user or informationgathered by various systems, including social-networking system 160. Asan example and not by way of limitation, a user may provide his or hername, profile picture, contact information, birth date, sex, maritalstatus, family status, employment, education background, preferences,interests, or other demographic information. In particular embodiments,a user node 202 may be associated with one or more data objectscorresponding to information associated with a user. In particularembodiments, a user node 202 may correspond to one or more pages.

In particular embodiments, a concept node 204 may correspond to aconcept. As an example and not by way of limitation, a concept maycorrespond to a place (such as, for example, a movie theater,restaurant, landmark, or city); a website (such as, for example, awebsite associated with social-networking system 160 or a third-partywebsite associated with a web-application server); an entity (such as,for example, a person, business, group, sports team, or celebrity); aresource (such as, for example, an audio file, video file, digitalphoto, text file, structured document, or application) which may belocated within social-networking system 160 or on an external server,such as a web-application server; real or intellectual property (suchas, for example, a sculpture, painting, movie, game, song, idea,photograph, or written work); a game; an activity; an idea or theory;another suitable concept; or two or more such concepts. A concept node204 may be associated with information of a concept provided by a useror information gathered by various systems, including social-networkingsystem 160. As an example and not by way of limitation, information of aconcept may include a name or a title; one or more images (e.g., animage of the cover page of a book); a location (e.g., an address or ageographical location); a website (which may be associated with a URL);contact information (e.g., a phone number or an email address); othersuitable concept information; or any suitable combination of suchinformation. In particular embodiments, a concept node 204 may beassociated with one or more data objects corresponding to informationassociated with concept node 204. In particular embodiments, a conceptnode 204 may correspond to one or more pages.

In particular embodiments, a node in social graph 200 may represent orbe represented by a page (which may be referred to as a “profile page”).Profile pages may be hosted by or accessible to social-networking system160. Profile pages may also be hosted on third-party websites associatedwith a third-party server 170. As an example and not by way oflimitation, a profile page corresponding to a particular externalwebpage may be the particular external webpage and the profile page maycorrespond to a particular concept node 204. Profile pages may beviewable by all or a selected subset of other users. As an example andnot by way of limitation, a user node 202 may have a correspondinguser-profile page in which the corresponding user may add content, makedeclarations, or otherwise express himself or herself. As anotherexample and not by way of limitation, a concept node 204 may have acorresponding concept-profile page in which one or more users may addcontent, make declarations, or express themselves, particularly inrelation to the concept corresponding to concept node 204.

In particular embodiments, a concept node 204 may represent athird-party webpage or resource hosted by a third-party system 170. Thethird-party webpage or resource may include, among other elements,content, a selectable or other icon, or other inter-actable object(which may be implemented, for example, in JavaScript, AJAX, or PHPcode) representing an action or activity. As an example and not by wayof limitation, a third-party webpage may include a selectable icon suchas “like,” “check in,” “eat,” “recommend,” or another suitable action oractivity. A user viewing the third-party webpage may perform an actionby selecting one of the icons (e.g., “eat”), causing a client system 130to send to social-networking system 160 a message indicating the user'saction. In response to the message, social-networking system 160 maycreate an edge (e.g., an “eat” edge) between a user node 202corresponding to the user and a concept node 204 corresponding to thethird-party webpage or resource and store edge 206 in one or more datastores.

In particular embodiments, a pair of nodes in social graph 200 may beconnected to each other by one or more edges 206. An edge 206 connectinga pair of nodes may represent a relationship between the pair of nodes.In particular embodiments, an edge 206 may include or represent one ormore data objects or attributes corresponding to the relationshipbetween a pair of nodes. As an example and not by way of limitation, afirst user may indicate that a second user is a “friend” of the firstuser. In response to this indication, social-networking system 160 maysend a “friend request” to the second user. If the second user confirmsthe “friend request,” social-networking system 160 may create an edge206 connecting the first user's user node 202 to the second user's usernode 202 in social graph 200 and store edge 206 as social-graphinformation in one or more of data stores 24. In the example of FIG. 2,social graph 200 includes an edge 206 indicating a friend relationbetween user nodes 202 of user “A” and user “B” and an edge indicating afriend relation between user nodes 202 of user “C” and user “B.”Although this disclosure describes or illustrates particular edges 206with particular attributes connecting particular user nodes 202, thisdisclosure contemplates any suitable edges 206 with any suitableattributes connecting user nodes 202. As an example and not by way oflimitation, an edge 206 may represent a friendship, family relationship,business or employment relationship, fan relationship, followerrelationship, visitor relationship, subscriber relationship,superior/subordinate relationship, reciprocal relationship,non-reciprocal relationship, another suitable type of relationship, ortwo or more such relationships. Moreover, although this disclosuregenerally describes nodes as being connected, this disclosure alsodescribes users or concepts as being connected. Herein, references tousers or concepts being connected may, where appropriate, refer to thenodes corresponding to those users or concepts being connected in socialgraph 200 by one or more edges 206.

In particular embodiments, an edge 206 between a user node 202 and aconcept node 204 may represent a particular action or activity performedby a user associated with user node 202 toward a concept associated witha concept node 204. As an example and not by way of limitation, asillustrated in FIG. 2, a user may “like,” “attended,” “played,”“listened,” “cooked,” “worked at,” or “watched” a concept, each of whichmay correspond to a edge type or subtype. A concept-profile pagecorresponding to a concept node 204 may include, for example, aselectable “check in” icon (such as, for example, a clickable “check in”icon) or a selectable “add to favorites” icon. Similarly, after a userclicks these icons, social-networking system 160 may create a “favorite”edge or a “check in” edge in response to a user's action correspondingto a respective action. As another example and not by way of limitation,a user (user “C”) may listen to a particular song (“Imagine”) using aparticular application (SPOTIFY, which is an online music application).In this case, social-networking system 160 may create a “listened” edge206 and a “used” edge (as illustrated in FIG. 2) between user nodes 202corresponding to the user and concept nodes 204 corresponding to thesong and application to indicate that the user listened to the song andused the application. Moreover, social-networking system 160 may createa “played” edge 206 (as illustrated in FIG. 2) between concept nodes 204corresponding to the song and the application to indicate that theparticular song was played by the particular application. In this case,“played” edge 206 corresponds to an action performed by an externalapplication (SPOTIFY) on an external audio file (the song “Imagine”).Although this disclosure describes particular edges 206 with particularattributes connecting user nodes 202 and concept nodes 204, thisdisclosure contemplates any suitable edges 206 with any suitableattributes connecting user nodes 202 and concept nodes 204. Moreover,although this disclosure describes edges between a user node 202 and aconcept node 204 representing a single relationship, this disclosurecontemplates edges between a user node 202 and a concept node 204representing one or more relationships. As an example and not by way oflimitation, an edge 206 may represent both that a user likes and hasused at a particular concept. Alternatively, another edge 206 mayrepresent each type of relationship (or multiples of a singlerelationship) between a user node 202 and a concept node 204 (asillustrated in FIG. 2 between user node 202 for user “E” and conceptnode 204 for “SPOTIFY”).

In particular embodiments, social-networking system 160 may create anedge 206 between a user node 202 and a concept node 204 in social graph200. As an example and not by way of limitation, a user viewing aconcept-profile page (such as, for example, by using a web browser or aspecial-purpose application hosted by the user's client system 130) mayindicate that he or she likes the concept represented by the conceptnode 204 by clicking or selecting a “Like” icon, which may cause theuser's client system 130 to send to social-networking system 160 amessage indicating the user's liking of the concept associated with theconcept-profile page. In response to the message, social-networkingsystem 160 may create an edge 206 between user node 202 associated withthe user and concept node 204, as illustrated by “like” edge 206 betweenthe user and concept node 204. In particular embodiments,social-networking system 160 may store an edge 206 in one or more datastores. In particular embodiments, an edge 206 may be automaticallyformed by social-networking system 160 in response to a particular useraction. As an example and not by way of limitation, if a first useruploads a picture, watches a movie, or listens to a song, an edge 206may be formed between user node 202 corresponding to the first user andconcept nodes 204 corresponding to those concepts. Although thisdisclosure describes forming particular edges 206 in particular manners,this disclosure contemplates forming any suitable edges 206 in anysuitable manner.

Card-Stack Interfaces

FIG. 3 illustrates an example mobile client system 130. This disclosurecontemplates mobile client system 130 taking any suitable physical form.In particular embodiments, mobile client system 130 may be a computingsystem as described below. As example and not by way of limitation,mobile client system 130 may be a single-board computer system (SBC)(such as, for example, a computer-on-module (COM) or system-on-module(SOM)), a laptop or notebook computer system, a mobile telephone, asmartphone, a personal digital assistant (PDA), a tablet computersystem, or a combination of two or more of these. In particularembodiments, mobile client system 130 may have a touch sensor 132 as aninput component. In the example of FIG. 3, touch sensor 132 isincorporated on a front surface of mobile client system 130. In the caseof capacitive touch sensors, there may be two types of electrodes:transmitting and receiving. These electrodes may be connected to acontroller designed to drive the transmitting electrodes with electricalpulses and measure the changes in capacitance from the receivingelectrodes caused by a touch or proximity input. In the example of FIG.3, one or more antennae 134A-B may be incorporated into one or moresides of mobile client system 130. Antennae 134A-B are components thatconvert electric current into radio waves, and vice versa. Duringtransmission of signals, a transmitter applies an oscillating radiofrequency (RF) electric current to terminals of antenna 134A-B, andantenna 134A-B radiates the energy of the applied the current aselectromagnetic (EM) waves. During reception of signals, antennae 134A-Bconvert the power of an incoming EM wave into a voltage at the terminalsof antennae 134A-B. The voltage may be transmitted to a receiver foramplification.

In particular embodiments, mobile client system 130 many include acommunication component coupled to antennae 134A-B for communicatingwith an Ethernet or other wire-based network or a wireless NIC (WNIC),wireless adapter for communicating with a wireless network, such as forexample a WI-FI network or modem for communicating with a cellularnetwork, such third generation mobile telecommunications (3G), or LongTerm Evolution (LTE) network. This disclosure contemplates any suitablenetwork and any suitable communication component 20 for it. As anexample and not by way of limitation, mobile client system 130 maycommunicate with an ad hoc network, a personal area network (PAN), alocal area network (LAN), a wide area network (WAN), a metropolitan areanetwork (MAN), or one or more portions of the Internet or a combinationof two or more of these. One or more portions of one or more of thesenetworks may be wired or wireless. As another example, mobile clientsystem 130 may communicate with a wireless PAN (WPAN) (such as, forexample, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, acellular telephone network (such as, for example, a Global System forMobile Communications (GSM), 3G, or LTE network), or other suitablewireless network or a combination of two or more of these. Mobile clientsystem 130 may include any suitable communication component for any ofthese networks, where appropriate.

In particular embodiments, the communication component coupled toantennae 134A-B mobile client system 130 may be configured to determinelocation data based on global positioning system (GPS) signals, cellulartriangulation, wireless hotspots, or any suitable methods fordetermining location data. In particular embodiments, the locationservice of mobile client system 130 may use one or more methods oflocation determination, such as for example, using the location of oneor more cellular towers, crowd-sourced location information associatedwith a WI-FI hotspot, or a GPS function of mobile client system 130. Asan example and not by way of limitation, the application may use GPSdata as the primary source of location information depending at least inpart on whether mobile client system 130 is able to acquire GPS datawithin a pre-determined period of time. As another example, if mobileclient system 130 is unable to acquire the GPS data within thepre-determined sampling duration, the application may use the locationdetermined using one or more cellular towers or WI-FI hotspots. Althoughthis disclosure describes a location service using particular methods oflocation determination, this disclosure contemplates a location serviceusing any suitable method or combination of methods of locationdetection.

In particular embodiments, a card-stack interface may be a visual modelof a home screen and one or more applications or any content associatedwith an application executed on mobile client system 130, as describedbelow. As an example and not by way of limitation, a home screen may bean application that may set one or more settings of mobile client 130,such as for example, the background image of mobile client system 130,or associate particular functions to particular applications installedon mobile client system 130, such as for example, the default webbrowser. In particular embodiments, mobile client system 130 may use thecard-stack interface to navigate between a home screen and applicationsor content of the application, as described below. As an example and notby way of limitation, a card of the card-stack interface may correspondto the graphical user interface (GUI) of the home screen and may beprovided for display on mobile client system 130 in response to a userpressing or actuating the “home” button, after using an applicationexecuted on mobile client system 130, or after completing a phone callon mobile client system 130. As described below, a card corresponding toan application or content of an application may be added to the cardstack in response to “launching” or executing the application. Inparticular embodiments, the user of mobile client system 130 maynavigate between applications and content of executed applicationsthrough the cards of the card-stack interface, as described below.

FIG. 4 illustrates an example card-stack interface. One or more “cards”450 of a card-stack interface (which includes cards 450A-C) may bedisplayed in display area 454 of mobile client system 130. In theexample of FIG. 4, each card 450 may correspond to a GUI of anapplication or content associated with an application executed on mobileclient system 130. In particular embodiments, card 450B of card-stackinterface may correspond to the GUI of an application executed by mobileclient system 130. As described above, card 450A in the card-stackinterface may correspond to the GUI of a home screen of mobile clientsystem 130. As an example and not by way of limitation, card 450A maycorrespond to the GUI of the home screen and may function as anapplication launcher of mobile client system 130. As an example and notby way of limitation, card 450A may be provided for display in responseto actuating the “home” button or detecting a pre-determined touchinput, such as for example, performing a downward swipe fromsubstantially the top of display area 454. In particular embodiments,card 450A corresponding to the GUI of the home screen may include one ormore interactive elements 452 corresponding to one or more applicationsor content installed on mobile client system 130. In particularembodiments, card 450A may be a visual representation of a lineartransversal of interactive elements 452. As an example and not by way oflimitation, interactive elements 452 may ordered from left to right inaccordance with the application or content was launched. As anotherexample, tapping an interactive element 652 may generate a card 650B-Cassociated with the interactive element 452.

In particular embodiments, one or more cards 450 that correspond to anapplication or content of an application being executed on mobile clientsystem 130 may be displayed as card stack interface 450. In the exampleof FIG. 4, card 450B corresponds to the GUI of an application beingexecuted on mobile client system 130 and card 450C corresponds to theGUI of content associated with the application being executed on mobileclient system 130. In particular embodiments, card 450B may be providedfor display in response to launching the application on mobile clientsystem 130. In particular embodiments, one or more applications onmobile client system 130 may control presentation of their GUIs as cards450C in card stack interface 450. Card 450C may be provided for displaybased at least in part on the settings of the application beingexecuted. As an example and not by way of limitation, card 450B maycorrespond to the GUI of a social-networking system or web browser andcontent card 450C may correspond to a profile page of a user on thesocial-networking system or a tab of the web browser, respectively. Thesocial-networking system or web browser may configure the card-stackinterface to automatically display the GUI of particular content in oneor more separate cards 450C. In particular embodiments, card 450Cassociated with content of an application may be provided for display inresponse to the user performing a pre-determined touch input, such asfor example, a swipe touch-gesture or tapping a pre-determined locationof the GUI of the application. In particular embodiments, the GUI ofeach card 450 may be depicted as a screenshot of the associatedapplication or content of the associated application. Although thisdisclosure illustrates and describes a particular configuration of cardswith particular characteristics and content, this disclosurecontemplates any suitable configuration of cards with any suitablecharacteristics, such as for example, dimensions or appearance, andcontent. Moreover, this disclosure contemplates a card-stack interfaceimplemented on any suitable computing device, such as for example, apersonal computer, a tablet computer, or a smartphone.

In the example of FIG. 4, card 450B corresponding to the GUI of alaunched application and a card 450C corresponding to the GUI of contentassociated with a launched application may overlay card 450A associatedwith the GUI of the home screen of mobile client system 130. Asdescribed above, opening a GUI of an application on mobile client system130 may initiate adding card 450C corresponding to the GUI to card stackinterface 450. In particular embodiments, card 450C may be placed on topof the card-stack interface when the application or content associatedwith card 450C is launched. In particular embodiments, an order of thecards in card stack 450 may be determined based at least in part on anorder in which the GUIs corresponding to cards 450B-C were opened. As anexample and not by way of limitation, cards 450B-C may be displayed inchronological order based on when the application was launched or thecontent associated with the application was separated or “popped out”from the application. As an example and not by way of limitation,application cards 450B and content cards 450C may be provided fordisplay such that the most recently executed applications or contentassociated with an application are displayed higher up in the cardstack.

In particular embodiments, the user of mobile client system 130 maynavigate through cards 450 using a touch input detected by touch sensorof mobile client system 130. As an example and not by way of limitation,the user may navigate between cards 450 by swiping upward or pullingdown an exposed edge of card 450 depending on how cards 450 are stackedon the display of mobile client system 130. Although this disclosuredescribes navigating through the cards using particular touch gestures,this disclosure contemplates navigation of the cards through anysuitable user input, such as for example, actuating a button. Inparticular embodiments, the card-stack interface of mobile client system130 may detect a user input to display a card, such as for example 450B,as the card on top of the card-stack interface and the card-stackinterface may display the card on top of the card-stack interface inresponse to the user input. As an example and not by way of limitation,the card-stack interface may order of cards 450 in the card-stackinterface by displaying cards 450B-C corresponding to more recentlyopened GUIs higher in the card-stack interface and cards 450B-Ccorresponding to less recently opened GUIs lower in the card-stackinterface. In particular embodiments, cards 450 of the card-stackinterface may be re-ordered in response to detecting powering down thedisplay of mobile client system 130, a change of geo-location of mobileclient system 130, a pre-determined movement detected through one ormore sensors of mobile client system 130, one or more pre-determinedtouch gestures detected through the touch sensor of mobile client system130, a change of network condition (e.g. loss of connectivity), arequest for higher priority for one or more cards 450 received throughan application programming interface (API), or any combination thereof.Although this disclosure describes re-ordering one or more cards of thecard-stack interface based on particular criteria, this disclosurecontemplates re-ordering of the cards of the card-stack interface basedon any suitable criteria.

In particular embodiments, the user may interact with the application orcontent associated with card 450C on top of the card-stack interface. Inthe example of FIG. 4, card 450C may be a GUI corresponding to a profilepage of a particular user on a social-networking system and the user ofmobile client system 130 may interact with the profile page through card450C corresponding to the GUI of the profile page. The user may thenmove card 450A corresponding to the GUI of the home screen of mobileclient system 130 to the top of the card-stack interface and launch anapplication associated with one of interactive elements 452, such as forexample, a newsfeed. After launching the newsfeed, the user may movecard 450B associated with a social-networking system to the top of thecard-stack interface and interact, for example, commenting on a statusupdate of another user, with the social-networking system through card450B corresponding to the GUI of the social-networking system.

Suggested Queries and Cards

Introduction

In particular embodiments, social-networking system 160 may beconfigured to generate personalized recommendations of objects that maybe represented as a concept node of a social graph described above.Herein, reference to a suggested query may refer to a search query withone or more search terms auto-populated with information of the user.Herein, reference to a query-domain may refer to a logical grouping ofcontent objects related to a particular category. Herein, reference to aquery-filter may refer to a filter applied to a query-domain thatreferences metadata or an attribute of objects of the query-domain. Asan example and not by way of limitation, social-networking system 160may generate a suggested query for a user as one or more structuredqueries, unstructured queries, or any combination thereof. As anotherexample, social-networking system 160 may generate one or more cardsthat references one or more search results of the suggested query.Although this disclosure describes generating a suggested query in aparticular manner, this disclosure contemplates generating the suggestedquery in any suitable manner.

FIG. 5 illustrates an example page of an online social network. Toconduct a search, a user may input or send a search query to the searchengine. In general, a user may input any character string into asearch-query field 510 of a page 520 of social-networking system 160 tosearch for content on the social-networking system 160 that matches thetext query. In particular embodiments, page 520 may present one or morecard clusters 530 where each card 450 may correspond to a recommendationthat are personalized to the user as described below. As an example andnot by way of limitation, one or more card clusters 530 may be displayedon page 520 in response to the user clicking the cursor in search-queryfield 510. In particular embodiments, the application or page 520 maygenerate cards through a suggested query for the user that includes oneor more search terms relevant to the user and automatically generated bysocial-networking system 160. Each card 450 may then include one or moresearch results 550 that correspond to the suggested query associatedwith the card 450. In particular embodiments, an initial card cluster530 may include one or more cards 450 without any filtering as describedbelow.

In particular embodiments, the suggested query may correspond to aphrase with one or more auto-populated search terms and may take theform of an unstructured text query. Social-networking system 160 maythen search data store 164 (or, in particular, a social-graph database)to identify content that matches the suggested query. The search enginemay conduct a search based on the suggested query phrase using varioussearch algorithms and generate search results that identify resources orcontent (e.g., user-profile pages, content-profile pages, or externalresources) that are most likely to be related to the suggested searchquery. In response, the search engine may identify one or more resourcesthat are likely to be related to the suggested query, each of which mayindividually be referred to as a “search result,” or collectively bereferred to as the “search results” corresponding to the suggestedquery. The identified content may include, for example, social-graphelements (e.g., user nodes 202 or concept nodes 204), profile pages,external webpages, or any combination thereof. As described below,social-networking system 160 may then generate one or more card clusters530 with one or more cards 450 corresponding to the identified contentwhich may be sent to the user.

As illustrated in the example of FIGS. 5 and 8, the results of thesuggested query may be presented to the user, in the form of one or morecards 450, each card having one or more search results 550 that mayinclude one or more links or hyperlinks, each link being associated witha different page that contains some of the identified resources orcontent. In particular embodiments, each link in cards 450 may be in theform of a Uniform Resource Locator (URL) that specifies where thecorresponding page is located and the mechanism for retrieving it. Thesocial-networking system 160 may then send the one or more cards 450(e.g., as a card cluster 530) to the web browser 132 on the user'sclient system 130. The user may then click on the URL links or otherwiseselect the content of cards 450 to access the content from thesocial-networking system 160 or from an external system (such as, forexample, a third-party system 170), as appropriate.

As described below, cards 450 of each card cluster 530 may be ranked andpresented to the user according to their inferred relative degrees ofrelevance to the user. In other words, cards 450 may be personalized forthe user based on, for example, social-graph information, userinformation, search or browsing history of the user, or other suitableinformation related to the user. In particular embodiments, the cardsmay be ranked (and thus personalized for a particular user) using aranking algorithm. The ranking algorithm may be implemented bysocial-networking system 160 (for example, by the search engine or byanother suitable system) in any suitable manner. As an example and notby way of limitation, cards that are more relevant to the user may beranked higher than the cards that are less relevant to the user. Inparticular embodiments, the search engine may limit its search toresources and content on the online social network. However, inparticular embodiments, the search engine may also search for resourcesor contents on other sources, such as a third-party system 170, theInternet or World Wide Web, or other suitable sources. Although thisdisclosure describes querying the social-networking system 160 in aparticular manner, this disclosure contemplates querying thesocial-networking system 160 in any suitable manner.

In particular embodiments, one or more cards 450, or card clusters 530displayed on page 520 may be modified in response to text entered intosearch-query field 510. In particular embodiments, one or moreclient-side and/or backend (server-side) processes may implement andutilize a “typeahead” feature that may automatically modify thesuggested query to include terms relevant to the user and the textcurrently being entered by a user into search-query field 510. Inparticular embodiments, as a user is entering text into search-queryfield 510, the typeahead feature may attempt to match the string oftextual characters being entered in the declaration to strings ofcharacters (e.g., names, descriptions) corresponding to user, concepts,or edges and their corresponding elements in the social graph 200. Inparticular embodiments, when a match is found, the typeahead feature mayautomatically populate the suggested query with a reference to thesocial-graph element (such as, for example, the node name/type, node ID,edge name/type, edge ID, or another suitable reference or identifier) ofthe existing social-graph element. As an example and not by way oflimitation, if a user types in “food” or “restaurants,” one or morecards 450 may be displayed that incorporate some typeahead suggestionssuch as “Restaurants in . . . ” while letting the user continue typing.Furthermore, a [Restaurants] card (e.g. 450) may be moved to the top ofa card cluster 530 and one or more non-food related cards (e.g. 450),such as for example “What's on TV” may be hidden. The user may thennavigate through one or more [Restaurant] cards as a personalized listof restaurant recommendations. More information on typeahead processesmay be found in U.S. patent application Ser. No. 12/763,162, filed 19Apr. 2010, and U.S. patent application Ser. No. 13/556,072, filed 23Jul. 2012, which are incorporated by reference.

In particular embodiments, the typeahead processes described herein maybe applied to search queries entered by a user. As an example and not byway of limitation, as a user enters text characters into a search-queryfield 510, a typeahead process may attempt to identify one or more usernodes 202, concept nodes 204, or edges 206 that match the string ofcharacters entered into search-query field 510 as the user is enteringthe characters. As the typeahead process receives requests or callsincluding a string or n-gram from the text query, the typeahead processmay perform or causes to be performed a modified suggested query toidentify existing social-graph elements (i.e., user nodes 202, conceptnodes 204, edges 206) based at least in part on the respective names,types, categories, or other identifiers matching the entered text alongwith information associated with the user. The typeahead process may useone or more matching algorithms to attempt to identify matching nodes oredges and process the modified suggested query that incorporates theidentified nodes or edges. In response to the modified suggested query,social-networking system 160 may automatically (or alternately based onan instruction in the request) call or otherwise search a social-graphdatabase for the matching social-graph elements, or for social-graphelements connected to the matching social-graph elements as appropriate.Although this disclosure describes applying the typeahead processes tosearch queries in a particular manner, this disclosure contemplatesapplying the typeahead processes to search queries in any suitablemanner.

In connection with search queries and search results, particularembodiments may utilize one or more systems, components, elements,functions, methods, operations, or steps disclosed in U.S. patentapplication Ser. No. 11/503,093, filed 11 Aug. 2006, U.S. patentapplication Ser. No. 12/977,027, filed 22 Dec. 2010, U.S. patentapplication Ser. No. 12/978,265, filed 23 Dec. 2010, and U.S. patentapplication Ser. No. 14/052,536, filed 11 Oct. 2013, which areincorporated by reference.

Element Detection and Parsing Ambiguous Terms

As described above, in response to text entered into search-query field510 by the user, the social-networking system 160 may identify portionsof the text that may correspond to particular social-graph elements.However, in some cases the text entered into search-query field 510 mayinclude one or more terms that are ambiguous, where an ambiguous term isa term that may possibly correspond to multiple social-graph elements.To parse the ambiguous term, the social-networking system 160 may accessa social graph 200 and then parse the text to identify the social-graphelements that corresponded to ambiguous n-grams from the text query. Thesocial-networking system 160 may then modify the suggested query toinclude one or more structured queries, where each structured querycorresponds to one of the possible matching social-graph elements. Thesestructured queries may be based on strings generated by a grammar model,such that they are rendered in a natural-language syntax with referencesto the relevant social-graph elements. In particular embodiments, thesestructured queries may be ranked based on information associated withuser to infer from among the structured queries which social-graphelement is most relevant to the user. The social-networking system 160may then lock the ambiguous term in the text to the social-graph elementinferred to be most relevant to user, and then generate a new set ofstructured queries based on the relevant social-graph element. Althoughthis disclosure describes generating particular structured queries in aparticular manner, this disclosure contemplates generating any suitablestructured queries in any suitable manner.

As an example and not by way of limitation, the user may enterunstructured text “friends stanford” into search-query field 510. As thequerying user enters this unstructured text into search-query field 510,the social-networking system 160 may modify the suggested query toinclude structured queries incorporating the unstructured text, asdescribed above. In particular embodiments, social-networking system 160the suggested query may take the form of one or more unstructuredqueries auto-populated to include information relevant to the user, suchas for example current or user profile information, as described below.The text may, of course, be structured with respect to standardlanguage/grammar rules (e.g. English language grammar). However, thetext will ordinarily be unstructured with respect to social-graphelements. In other words, text entered into search-query field 502 maynot ordinarily include embedded references to particular social-graphelements. Thus, as used herein, a structured query refers to a querythat contains references to particular social-graph elements, allowingthe search engine to search based on the identified elements.Furthermore, the text may be unstructured with respect to formal querysyntax. In other words, the text may not necessarily be in the format ofa query command that is directly executable by a search engine (e.g.,the text query “friends stanford” could be parsed to form a suggestedquery command “intersect(school(Stanford University), friends(me)”, or“/search/me/friends/[node ID for StanfordUniversity]/students/ever-past/intersect”, which could be executed as asuggested query in a social-graph database). With respect to cards 450,discussed below, social-networking system 160 may generate cards 450that correspond to both typeahead query results and structured queryresults. As an example and not by way of limitation, social-networkingsystem 160 may generate a first card 450 corresponding to the results ofthe typeahead process and second card 450 corresponding to the query“Friends Nearby,” and a third card 450 corresponding to the results ofthe structured query “Friends Nearby who went to Stanford.” These cards450 may then be ranked and filtered as discussed below.

Although this disclosure describes receiving particular suggestedqueries in a particular manner, this disclosure contemplates receivingany suitable suggested queries in any suitable manner.

More information on element detection and parsing queries may be foundin U.S. patent application Ser. No. 13/556,072, filed 23 Jul. 2012, U.S.patent application Ser. No. 13/731,866, filed 31 Dec. 2012, and U.S.patent application Ser. No. 13/732,101, filed 31 Dec. 2012, each ofwhich is incorporated by reference.

Generating Structured Search Queries

In particular embodiments, the social-networking system 160 may access acontext-free grammar model comprising a plurality of grammars. Eachgrammar of the grammar model may comprise one or more non-terminaltokens (or “non-terminal symbols”) and one or more terminal tokens (or“terminal symbols”/“query tokens”), where particular non-terminal tokensmay be replaced by terminal tokens. A grammar model is a set offormation rules for strings in a formal language. In particularembodiments, the social-networking system 160 may generate one or morestrings using one or more grammars. To generate a string in thelanguage, one begins with a string consisting of only a single startsymbol. The production rules are then applied in any order, until astring that contains neither the start symbol nor designatednon-terminal symbols is produced. In a context-free grammar, theproduction of each non-terminal symbol of the grammar is independent ofwhat is produced by other non-terminal symbols of the grammar. Thenon-terminal symbols may be replaced with terminal symbols (i.e.,terminal tokens or query tokens). Some of the query tokens maycorrespond to identified nodes or identified edges, as describedpreviously. A string generated by the grammar may then be used as thebasis for a structured query containing references to the identifiednodes or identified edges. The string generated by the grammar may berendered in a natural-language syntax, such that a structured querybased on the string is also rendered in natural language. A context-freegrammar is a grammar in which the left-hand side of each production ruleconsists of only a single non-terminal symbol. A probabilisticcontext-free grammar is a tuple

Σ,N,S,P

, where the disjoint sets Σ and N specify the terminal and non-terminalsymbols, respectively, with SϵN being the start symbol. P is the set ofproductions, which take the form E→ξ(p), with EϵN, ξϵ(Σ∪N)⁺, andp=Pr(E→ξ), the probability that E will be expanded into the string ξ.The sum of probabilities p over all expansions of a given non-terminal Emust be one. Although this disclosure describes accessing particulargrammars, this disclosure contemplates any suitable grammars.Furthermore, although this disclosure describes generating strings in aparticular manner, this disclosure contemplates generating strings inany suitable manner.

In particular embodiments, the social-networking system 160 may generatea suggested query that may include one or more structured queries. Thestructured queries may be based on the natural-language stringsgenerated by one or more grammars, as described previously. Eachstructured query may include references to one or more of the identifiednodes or one or more of the identified edges 206. This type ofstructured query may allow the social-networking system 160 to moreefficiently search for resources and content related to the onlinesocial network (such as, for example, profile pages) by searching forcontent connected to or otherwise related to the identified user nodes202 and the identified edges 206. As an example and not by way oflimitation, in response to the text in search-query field 510, “show mefriends of my girlfriend,” the social-networking system 160 may generatea suggested query that includes a structured query “Friends ofStephanie,” where “Friends” and “Stephanie” in the structured query arereferences corresponding to particular social-graph elements. Thereference to “Stephanie” would correspond to a particular user node 202(where the social-networking system 160 has parsed the n-gram “mygirlfriend” to correspond with a user node 202 for the user“Stephanie”), while the reference to “Friends” would correspond tofriend-type edges 206 connecting that user node 202 to other user nodes202 (i.e., edges 206 connecting to “Stephanie's” first-degree friends).When executing this structured query, the social-networking system 160may identify one or more user nodes 202 connected by friend-type edges206 to the user node 202 corresponding to “Stephanie”. As anotherexample and not by way of limitation, in response to the text, “friendswho work at facebook,” the social-networking system 160 may generate astructured query “My friends who work at Facebook,” where “my friends,”“work at,” and “Facebook” in the structured query are referencescorresponding to particular social-graph elements as describedpreviously (i.e., a friend-type edge 206, a work-at-type edge 206, andconcept node 204 corresponding to the company “Facebook”). Based on theresults of the modified suggested query, social-networking system 160may modify one or more cards 450 or card cluster 530A-B to incorporate,for example, the names (name strings) of the matching nodes. Thesestructured queries may be pre-generated and accessed from a cache orgenerated dynamically in response to input from the user. Although thisdisclosure describes generating particular structured queries in aparticular manner, this disclosure contemplates generating any suitablestructured queries in any suitable manner.

In particular embodiments, social-networking system 160 may score thegenerated suggested queries. The score may be, for example, a confidencescore, a probability, a quality, a ranking, another suitable type ofscore, or any combination thereof. The suggested queries may be scoredbased on a variety of factors, such as, for example, the page or type ofpage the user is accessing, user-engagement factors,business-intelligence data, the predicted click-thru rate (CTR) ofparticular suggested queries, the conversion-rate of particularsuggested queries, user-preferences of the user, the search history ofthe user, advertising sponsorship of particular queries, the user'ssocial-graph affinity for social-graph elements referenced in particularqueries, the inferred intent of the user, the general or currentpopularity of particular suggested queries, the usefulness of particularsuggested queries, the current geographic location of the user, thecurrent time, other suitable factors, or any combination thereof.Although this disclosure describes ranking suggested queries in aparticular manner, this disclosure contemplates ranking suggestedqueries in any suitable manner.

As described above, cards 450 corresponding to suggested queries may bedisplayed on a user-interface (UI) of a native application or on awebpage accessed by a browser client on the user's client system 130, asillustrated in FIG. 3. In particular embodiments, cards 450corresponding to suggested queries may be presented to the user in aranked order, such as, for example, based on a rank previouslydetermined as described above. Furthermore, in particular embodiments,cards 450 corresponding to suggested queries above a threshold rank maybe sent or displayed to the user. More information on structured searchqueries and grammar models may be found in U.S. patent application Ser.No. 13/556,072, filed 23 Jul. 2012, U.S. patent application Ser. No.13/674,695, filed 12 Nov. 2012, and U.S. patent application Ser. No.13/731,866, filed 31 Dec. 2012, each of which is incorporated byreference.

Generating Search Results

In particular embodiments, in response to a suggested query generated bya particular application or program, the social-networking system 160may generate one or more search results, where each search resultmatches (or substantially matches) the terms of the suggested query. Thesocial-networking system 160 may generate a suggested query based atleast in part on information of the user corresponding to a user node202. As described below, in response to the suggested query, thesocial-networking system 160 may generate one or more cards 450corresponding to search results of the suggested query. In particularembodiments, cards 450 corresponding to the search results may beclustered or ranked and sent to the user as a page accessed by a browserclient or a UI of a native application. Although this disclosuredescribes and illustrates displaying cards and card clusters onparticular pages, this disclosure contemplates displaying cards and cardclusters on any suitable pages.

In particular embodiments, the social-networking system 160 may generateone or more cards 450 corresponding to search results of the suggestedquery. Cards 450 may include information identifying resources orcontent (e.g., user-profile pages, content-profile pages, or externalresources) that match or are likely to be related to the suggestedquery. In particular embodiments, each card 450 may correspond to aparticular user node 202 or concept node 204 of social graph 200. Cards450 may include a link to the profile page associated with the node, aswell as contextual information about the node (i.e., contextualinformation about the user or concept that corresponds to the node). Inparticular embodiments, each search result may correspond to a node thatis connected to one or more of the selected nodes by one or more of theselected edges of the suggested query. In particular embodiments, thesocial-networking system 160 may also transmit advertisements or othersponsored content to the client system 130 in response to the suggestedquery. The advertisements may be included in as part of cards 450, orseparately. The advertisements may correspond to one or more of theobjects referenced in cards 450. In particular embodiments, thesocial-networking system 160 may filter out one or more cards 450identifying particular resources or content based on the privacysettings associated with the users associated with those resources orcontent. Although this disclosure describes generating particular cardscorresponding to a suggested query in a particular manner, thisdisclosure contemplates generating any suitable cards corresponding toany suitable suggested query in any suitable manner.

More information on generating search results may be found in U.S.patent application Ser. No. 13/556,017, filed 23 Jul. 2012, U.S. patentapplication Ser. No. 13/731,939, filed 31 Dec. 2012, and U.S. patentapplication Ser. No. 14/052,564, filed 11 Oct. 2013, each of which isincorporated by reference.

Generating Cards with Suggested Queries

In particular embodiments, social-networking system 160 may generate anddisplay recommendations in the form of cards 450 that are personalizedor relevant to the user. In particular embodiments, one or more cardstacks 530A-B may be sent to a user. Herein, reference to a filter-valuemay refer to metadata or attributes that describe particularcharacteristics of an object. Herein, reference to a user-engagementscore may refer to a metric for measuring the engagement of a user ofthe online social network, such as, for example, by engaging with otherusers, concepts, content, etc. As an example and not by way oflimitation, social-networking system 160 may generate one or more cardstacks 530A-B that may be sent to the user as part of a null searchstate of a particular search page on social-networking system. Asanother example and not by way of limitation, social-networking system160 may generate one or more card stacks 530A-B as part of a nativeapplication associated with social-networking system 160 executed onmobile client system 130. Although this disclosure describes generatingpersonalized recommendations in a particular manner, this disclosurecontemplates generating personalized recommendations in any suitablemanner.

FIG. 6 illustrates example modules to generate example cards. AlthoughFIG. 6 illustrates a particular configuration of particular modules thathave particular functions, this disclosure contemplates any suitableconfiguration of modules of any suitable modules that may have anysuitable function or combination of functions. As described above,social-networking system 160 may generate cards 450 based on informationof the user, such as for example current location of the user or thetime of day. In particular embodiments, an application 610 executed on aclient system 130 or social-networking system 160 may send informationof the user to a card-generation module 620. In particular embodiments,social-networking system 160 may use information associated with socialgraph 200, non-social graph information, or any combination thereof togenerate one or more cards 450. As an example and not by way oflimitation, geo-locations associated with “checked-ins” of the user maybe a non-social graph of how users are connected to “places” orgeo-locations, and how all of the places in the world are connected toeach other through the users who have visited those geo-locations. Inparticular embodiments, application 610 may access current informationassociated with the user, such as for example, current location or timeassociated with the user. As an example and not by way of limitation,application 610 may determine the current location of the user throughthe location services of mobile client system 130 as described above. Asanother example, application 610 may determine the current location ofthe user through the Internet protocol (IP) or media access control(MAC) address of client system 130. In particular embodiments, thecurrent information of the user accessed by application 610 may be sentto card-aggregator module 620. Card-aggregator module 620 may generateone or more suggested queries that then may be sent to domain modulesdomain₁-domain_(N). Furthermore, card-aggregator module 620 may inferone or more search terms that may be auto-populated into the suggestedquery based on received information, such as for example the currentlocation of the user or the time of day.

In particular embodiments, each domain module domain₁-domain_(N) maycorrespond to a particular query-domain. As an example and not by way oflimitation, each domain module domain₁-domain_(N) may include a searchindex of a vertical of objects stored on social-networking system 160,as described below. The search index may be hosted by a respective indexserver comprising one or more computing devices (e.g., servers). As anexample and not by way of limitation, the search index of eachquery-domain may reference objects associated with a particular type ofplace (e.g., a movie theater, restaurant, landmark, or city), aparticular type of entity (e.g., a person, business, group, sports team,or celebrity), a particular type of resource (e.g., an audio file, videofile, digital photo, text file, structured document, or application), ora particular type real or intellectual property (e.g., a sculpture,painting, movie, game, song, idea, photograph, or written work) or anycombination thereof. In particular embodiments, data stores or verticalsmay store objects of a social-networking system. In particularembodiments, each data store or vertical may be configured to storeobjects of a particular query-domain in a respective data storagedevice. As an example and not by way of limitation, a first vertical maystore objects associated with movies; a second vertical may storeobjects associated with restaurants; a third vertical may store objectsassociated with landmarks. In particular embodiments, each object mayhave filter values that are metadata or attributes that describeparticular query-filters that are characteristics of an object stored onsocial-networking system 160. As an example and not by way oflimitation, example query-filters [“Genre”], [“Cuisine”], [“Location”]may have associated example filter values [“Sci-Fi”], [“Chinese”] and[“Palo Alto”], respectively.

In particular embodiments, the search results of the suggested queryreturned to card-aggregator module 620 may be modified by query-filtersand associated filter values identified by card-recommendation module630. In particular embodiments, card-recommendation module 630 mayidentify one or more query-filters relevant to the user from apre-determined list of query-filters associated with each domain modulesdomain₁-domain_(N). In particular embodiments, card-recommendationmodule 630 may store or access information related to information fromsocial-graph 200 of the user, features of objects (e.g. a number of“likes” associated with an object), demographic information of the user,or any combination thereof. In addition, card-recommendation module 630may access data associated with one or more objects (e.g. hours ofoperation, physical locations, or event times) stored on one or morethird-party systems 170 to supplement the filter values of one or moreobjects stored on social-networking system 160. Furthermore,card-recommendation module 630 may identify one or more query-filtersand associated filter values through identification of one or more edgesconnecting to one or more concept or user nodes of social-graph 200 ofthe user. In addition, card-recommendation module 630 may identifyparticular query-filters and associated filter values that may berelevant to the user by accessing information stored on user-historymodule 640 and demographic-data module 650 in combination with the dataof card-recommendation module 630. As an example and not by way oflimitation, card-recommendation module 630 may access activity of“friends” of the user and identify one or more query-filters andassociated filter values based on the activity of the “friends.” Forexample, a query-filter and associated filter value may be identifiedbased on one or more “friends” of the user “liking” a particular contentobject, such as for example a particular movie or multiple movies of aparticular genre. As another example, card-recommendation module 630 mayidentify one or more query-filters and associated filter values based onthe activity of other users with at least a subset of similardemographic data as the user.

In particular embodiments, demographic-data module 650 may storedemographic information of user through the user profile or social graph200 described above. Example demographic information of the user mayinclude gender, age, hometown, location of residence, school attended,organization membership, religious affiliation, level of education,relationship status, occupation, or any combination thereof. Inparticular embodiments, one or more query-filters and associated filtervalues may be identified by card-recommendation module 630 based atleast in part on identifying edges to objects in social-graph 200 ofother users with similar demographic information to the user stored ondemographic-data module 650. As an example and not by way of limitation,card-recommendation module 630 may identify a particular query-filter(e.g. [“Genre”]) having an associated filter value of (e.g. [“Sci-Fi”])based on other users having at least a subset of demographic informationin common with the user, such as for example having the same level ofeducation and occupation. In particular embodiments, card-recommendationmodule 630 may identify one or more query-filters and filter values fora particular query-domain based at least in part on a determination ofwhether the user is local or a tourist to the current location. As anexample and not by way of limitation, the determination of whether theuser is local or tourist of the current location may be based oncomparing the current location of the user to hometown or location ofresidence information stored by demographic-data module 650. As anotherexample, certain demographic information, such as, for example, a user'shometown, work, school, etc., may be derived from stored historic GPS orlocation data of the user. For example, if location data of the userindicates the user is at Menlo Park during working hours on most days,social-networking system may infer Menlo Park is the workplace of theuser. Furthermore, inferred geo-locations of user may be stored indemographic-data module 650 and used by card-recommendation module 630even if the user does not explicitly provide this information in theiruser profile. As another example, location data may be extracted fromphotos of the user to determine a geo-location associated with the userand infer the hometown of the user.

In particular embodiments, user-history module 640 may storesocial-graph information that may include the user's past activitywithin social-networking system 160 that may be represented as an edgeconnecting the node of the user to other nodes of the user'ssocial-graph 200 as described above. As an example and not by way oflimitation, user-history module 640 may include a check-in history or“like” history of the user. For example, card-recommendation module 630may identify particular query-filters (e.g. [“Cuisine”] and [“Location”]and associated filter values [“Chinese”] and [“Palo Alto”],respectively, that are relevant to the user based at least in part onthe user having multiple check-ins at one or more restaurants of aparticular cuisine near his place of residence. As another example,card-recommendation module 630 may identify one or more query-filtersand associated filter values based at least in part on a search historyof the user stored on user-history module 640. In particularembodiments, user-history module 640 may include information associatedwith interactions of the user with previously displayed cards 450. Asdescribed below, one or more query-filters and associated filter valuesmay be identified as being more or less relevant to the user based atleast in part on interactions or lack of interaction by the user withcards 450 referencing the query-filters and associated filter values. Inparticular embodiments, card-recommendation module 630 may identify oneor more query-filters for a particular query-domain based at least inpart on a determination of whether the user is local or a tourist to thecurrent location. As an example and not by way of limitation, thedetermination of whether the user is local or tourist of the currentlocation may be based on the “check-in” or “likes” of the user stored byuser-history module 640. In particular embodiments, the determination ofwhether the user is a local or tourist may be based on calculating ascore based on information of the user stored by user-history module 640or demographic-data module 650 as described above.

Card-recommendation module 630 may send the identified query-filters andassociated filter value of the particular query-domains of the suggestedquery to domain modules domain₁-domain_(N). Although this disclosuredescribes query-domains having a particular number of query-filtershaving a particular number of associated filter values, this disclosurecontemplates query-domains having any suitable number of query-filtersand associated filter values. In particular embodiments, query-filtersmay remove or ignore a subset of search results returned by domainmodules domain₁-domain_(N) based at least in part on the identifiedquery-filters and associated filter values. As an example and not by wayof limitation, for query-filter [“Rating”] and associated filter value[“4 Stars”] of the [“Restaurant’] query-domain, one or more objectsassociated with the [“Restaurant”] query-domain that are returned inresponse to the suggested query and have a [“4 Stars”] filter value forthe [“Rating”] query-filter are sent to card-aggregator module 620.

As described above, card-aggregator module 620 may generate one or morecards 450 that reference one or more objects received from domainmodules domain₁-domain_(N) in response to the suggested query. Inparticular embodiments, a user-engagement score may be calculated foreach card 450 based on one or more user-engagement factors. Inparticular embodiments, the user-engagement factors may include one ormore of social-graph information, demographic information, currentinformation of the user, or any combination thereof. The user-engagementscore may be, for example, a confidence score, a probability, a quality,a ranking, another suitable type of score, or any combination thereof.As an example and not by way of limitation, the user-engagement scorefor each card may represent a probability that the user will engage withthe card. As another example, the user-engagement score may represent anestimate of the degree and depth of user interaction with cards 450referencing particular objects against a clearly defined set of goals.As an example and not by way of limitation, calculating theuser-engagement score may be based on previous engagement with cards 450referencing each query-domain, previous click-thru rate of cards 450referencing each query-domain, the conversion-rate of particular cards450 referencing each query-domain, preferences of the user, the searchhistory of the user, the user's social-graph affinity for social-graphelements or objects referenced by cards 450, inferring the intent of theuser, the current location of the user, the general or currentpopularity of the query-domain of cards 450 (“trending”), other suitablefactors, or any combination thereof. As an example and not by way oflimitation, preferences of the user may specify, for example, suggestedqueries or types of suggest queries of interest or not of interest tothe user. As an example and not by way of limitation, social-networkingsystem 160 may identify cards 450 that correspond to suggested queriesor reference query-domains/filters preferred by the user, as specifiedby a user-preference of the user, and calculate higher user-engagementscores for these cards 450 specified as being preferred by the user(similarly, cards 450 corresponding to suggested queries or suggestedquery-domains/filters specified as being not preferred may be scoredlower or completely excluded/assigned null scores). As another example,the intent of the user may be inferred, as described below, and cardscorresponding to suggested queries related to that intent may begenerated and sent to the user. Although this disclosure describescalculating the user-engagement score of cards in a particular manner,this disclosure contemplates calculating the user-engagement score ofcards in any suitable manner.

Social-networking system 160 may send one or more cards 450 to the user.As an example and not by way of limitation, cards 450 may be sent as oneor more card clusters 530. In particular embodiments, cards 450 may bedisplayed on a page currently accessed by the user. As an example andnot by way of limitation, the page may be a profile page ofsocial-network system 160 (e.g., a user-profile page of the queryinguser or another user, or a concept-profile page of a concept associatedwith the online social network), a newsfeed page of the online socialnetwork, a search-results page corresponding to a particular card, oranother suitable page of the online social network. In particularembodiments, each sent card 450 may have a user-engagement score greaterthan a user-engagement threshold for the user. After scoring cards 450,social-networking system 160 may then send only those cards 450 having auser-engagement score greater than the user-engagement threshold score.In particular embodiments, the sent cards 450 may be displayed on anewsfeed page of the online social network. In particular embodiments,cards 450 corresponding to suggested queries having a user-engagementscore greater than the user-engagement threshold score may automaticallybe pushed to a user. As an example and not by way of limitation, thesent cards may be displayed as one or more stories in the newsfeed ofthe user, a notification pushed to client system 130 of the user, asuggested null-state query, or any combination thereof. Cards 450 may begenerated and scored, as described previously, and rather thandisplaying the card in association with a search-query field 350, thecard could be generated as a newsfeed store and displayed in a user'snewsfeed in response to the user accessing a newsfeed page of the onlinesocial network, in a standalone application, or on a home screen of aclient system.

FIG. 7 illustrates an example method 700 for generating cards for auser. The method may begin at step 710, where social-networking system160 may access a social graph 200 comprising a plurality of nodes and aplurality of edges 206 connecting the nodes. The nodes may comprise afirst user node 202 and a plurality of second nodes (one or more usernodes 202, concepts nodes 204, or any combination thereof). At step 720,social-networking system 160 may generate a number of cards. Inparticular embodiments, each card may include a suggested query thatreferences a query-domain associated with the online social network andzero or more query-filters. Each query-filter may reference one or morenodes of the plurality of nodes or one or more edges of the plurality ofedges. At step 730, social-networking system 160 may calculate auser-engagement score for each card based on one or more user-engagementfactors. At step 740, social-networking system 160 may send each cardhaving a user-engagement score greater than a user-engagement thresholdscore to the first user for display on a page currently accessed by thefirst user. Particular embodiments may repeat one or more steps of themethod of FIG. 7, where appropriate. Although this disclosure describesand illustrates particular steps of the method of FIG. 7 as occurring ina particular order, this disclosure contemplates any suitable steps ofthe method of FIG. 7 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates an example method forgenerating cards for the user including the particular steps of themethod of FIG. 7, this disclosure contemplates any suitable method forgenerating cards for the user including any suitable steps, which mayinclude all, some, or none of the steps of the method of FIG. 7, whereappropriate. Furthermore, although this disclosure describes andillustrates particular components, devices, or systems carrying outparticular steps of the method of FIG. 7, this disclosure contemplatesany suitable combination of any suitable components, devices, or systemscarrying out any suitable steps of the method of FIG. 7.

FIG. 8 illustrates an example wireframe of an example card interface onan example mobile client system 130. As described above,social-networking system 160 may automatically generate one or morecards 450 that each includes one or more search results 550. Inparticular embodiments, an initial card stack may include one or morecards 450 that reference a particular query-domain and zeroquery-filters. Furthermore, each card 450 may correspond to a suggestedquery that references a query-domain associated with social-networkingsystem 160. In particular embodiments, one or more cards 450 maycorrespond to a preview of one or more search results of the suggestedquery.

As described above, the query-domain of cards 450 may be modified by oneor more query-filters. For example, a [“restaurant”] query-domain mayhave one or more query-filters, such as for example [“location”],[“cuisine”], or [“rating”]. In particular embodiments, cards 450 mayresult from a combination of the query-domain, zero or morequery-filters, and zero or more filter values that may reference one ormore concept nodes, user nodes, edges of social graph 200, resources orobjects on social-networking system 160, or any combination thereof. Asdescribed above, the user may interact with one or more cards 450 of thedisplayed card cluster 530. As an example and not by way of limitation,a native application on mobile client system 130 may detect an inputcorresponding to a “scroll” gesture to navigate between cards 450 ofcard cluster 530. For example, the user may view cards 450 withdifferent query-filters by scrolling through card cluster 530. Asanother example, the native application may detect an inputcorresponding to a “swipe” gesture on a particular card 450 to revealoptions for the user to apply additional or different query-filters. Inparticular embodiments, detecting input corresponding to a “swipe”gesture on a particular card 450 to display a subsequent card 450 havinga same query-domain and one or more different query-filters as thepreviously displayed card 450. As an example and not by way oflimitation, the user may apply a query-filter corresponding to[“rating”] to cards 450 of card cluster 530 with query-domain[“restaurants”] and query-filter [“cuisine”]. In particular embodiments,cards 450 lower in card cluster 530 may be modified based on theinteractions of the user with previously displayed cards 450 of cardcluster 530. As an example and not by way of limitation, cards 450 lowerdown in card cluster 530 may display restaurants of a particular cuisinethat additionally have a particular rating. In particular embodiments,social-networking system 160 may generate cards 450 relevant todifferent time periods. A particular card 450 may correspond to a searchquery having search results that are immediately relevant, relevant to afuture time period, or relevant to any other suitable time period. Cards450 may be ranked in part on the time period they are relevant to. As anexample and not by way of limitation, based on historical application ofquery-filter [“dinner”], cards 450 corresponding to “Places to eatdinner tonight” may be placed higher in card cluster 530 even if thecurrent time is only 2:00 PM, which is outside “normal” dinner hours,and thus may not be immediately relevant for several hours. As anotherexample and not by way of limitation, based on a user's current location(e.g., as determined from the user's mobile client system 130) being outof the office, cards 450 corresponding to “Places to eat now” may beplaced higher in card cluster 530 even if the current time is 2:00 PM,which may be after “normal” lunch hours, but may be consideredimmediately relevant based on the user's current location.

Ranking Cards with Suggested Queries

In particular embodiments, ranking of cards 450 may be based at least inpart on particular query-domains, query-filters, filter values, or anycombination thereof. Herein, reference to a predicted CTR ranking mayrefer to a probability that the user will “click through” to interactwith an entity or user associated with the content of a particular card450. As an example and not by way of limitation, social-networkingsystem 160 may rank cards 450 using a value model described below. Asanother example and not by way of limitation, social-networking system160 may rank cards 450 according to inferring a use case associated withcard 450, as described below. Although this disclosure describes rankingcards in one or more particular manners, this disclosure contemplates inany suitable manner.

In particular embodiments, social-networking system 160 may rank cards450 of a particular card cluster 530 based at least in part on a valuemodel. As an example and not by way of limitation, the value model ofranking may be based on a predicted CTR as well as a user-interest valueof the card, which my represent the user's interest, satisfaction,happiness, etc. when clicking-thru on the particular card (or performingan activity associated with the card), or may also represent an actualmonetary value (e.g., advertising sponsorship) associated withinteracting with the particular card. As an example and not by way oflimitation, a first activity (e.g. reading an article) with a 10%click-thru rate may have an associated user-interest value of 1,representing a nominal user interest in the activity, while a secondactivity (e.g. buying a concert ticket) may have a CTR of 1% but auser-interest value of 100, where the second activity may be determinedto make users 100-times happier (or be 100-times more interesting) to dothis than the first activity. Therefore, cards 450 related to the secondactivity may be ranked higher than cards 450 related to the firstactivity, notwithstanding the second activity being associated withcards having a lower predicted CTR. In particular embodiments, the valuemodel may be a function of the predicted CTR multiplied by a predictedconversion rate and multiplied by a user-interest value of theconversion event.

As another example, the value model of ranking may be based at least inpart on social-networking system 160 calculating the predicted CTR foreach card 450. Social-networking system 160 may infer cards 450corresponding to suggested queries with higher predicted CTRs are ofhigher interest to the user. For example, social-networking system 160may calculate the predicted CTR based at least in part on factors, suchas for example time of day, day of the week, current location of theuser, CTRs of other users with similar demographic data, a calculatedCTR for the user with respect to particular query-domains/query-filters,social-graph affinity, or any combination thereof. In particularembodiments, social-networking system 160 may calculate the predictedCTR for each card 450 based at least in part on preferences of the user.As an example and not by way of limitation, one of more user-preferencesmay be specified by the user, other users (e.g., parents or employers ofthe user), system administrators, third-party systems 170, or otherwisedetermined by social-networking system 160.

In particular embodiments, social-networking system 160 may calculatethe predicted CTR for each card 450 based at least in part on a searchhistory users of the social network. As an example and not by way oflimitation, cards 450 that reference social-graph objects (or types ofobjects) that the user has previously accessed (or been accessed byother users that are relevant to the user, such as “friends” of theuser), or are relevant to the social-graph objects the user haspreviously accessed, may be more likely to be of interest to the user.Thus, these cards 450 may be scored more highly. As an example and notby way of limitation, if user has previously visited the “StanfordUniversity” profile page and has a current location of Palo Alto,social-networking system 160 may determine that a particular card 450that references the concept node 204 for “Stanford University” has arelatively high CTR based at least in part on the user has previouslyaccessed the concept node 204 for the university. As another example, ifthe user has previously interacted with search results associated withparticular query-domains, and not interacted with search resultsassociated with other query-domains, then social-networking system 160may score the predicted CTR of cards 450 referencing query-domainspreviously interacted with by the user higher than other cards 450referencing other query-domains not previously interacted with.

In particular embodiments, social-networking system 160 may calculatethe predicted CTR for each card 450 based at least in part on asocial-graph affinity of the user node 202 corresponding to the userwith respect to one or more of the nodes referenced in one or more cards450. Cards 450 that reference nodes having relatively high social-graphaffinity (e.g., a high affinity coefficient) with respect to the usermay be more likely to be of interest to the user. Thus, these cards 450may have a higher predicted CTR. As an example and not by way oflimitation, social-networking system 160 may calculate the predicted CTRof cards 450 based at least in part on a degree of separation (which maybe one measure of affinity) between the user node 202 of the user andthe particular social-graph objects referenced in the respective card450. Cards 450 that reference social-graph objects that are closer insocial graph 200 to the user (e.g., fewer degrees of separation betweenthe object and user node 202 of the user) may have a higher predictedCTR than cards 450 that reference social-graph objects that are furtherfrom the user (e.g., more degrees of separation). Although thisdisclosure describes calculating a predicted CTR in a particular manner,this disclosure contemplates calculating the predicted CTR in anysuitable manner.

In particular embodiments, social-networking system 160 may calculatethe predicted CTR for each card 450 based at least in part ondetermining a trend in regard to a particular query-domain or filtervalues of the suggested query of cards 450. Furthermore,social-networking system 160 may calculate trending query-domains orquery-filters based on the activity of all users on social-networkingsystem 160. As an example and not by way of limitation,social-networking system 160 may determine a particular query-domain(e.g. [“Restaurants”]) is trending when there is an increase inactivity, such as for example “check-ins” or “likes,” associated withone or more concept nodes corresponding to restaurants over a relativelyshort period of time. Furthermore, social-networking system 160 maydetermine a particular filter-value (e.g. [“Chinese’]) associated with aparticular query-filter (e.g. [“Cuisine”]) is trending when there is anincrease in activity, such as for example “check-ins”, comments, or“likes,” associated with concept nodes corresponding to Chineserestaurants over a relatively short period of time. In particularembodiments, cards 450 that reference objects corresponding to trendingquery-domains or filter values associated with query-filters may have ahigher predicted CTR than cards 450 that reference objects that are nottrending.

In particular embodiments, social-networking system 160 may rank cards450 based at least in part on inferring a use case associated with eachcard 450. Furthermore, inferring the use case of the user may be basedat least in part on the user history of the user or other users withsimilar demographic information as the user. In particular embodiments,the inferred intent(s) of the user may correspond to particularsuggested queries or query-domain/filters, and cards 450 correspondingto suggested queries matching the inferred intent of the user may have ahigher ranking. In particular embodiments, social-networking system 160may infer the intent of the user based on a variety of factors, such asfor example, the time of day, the proximity of the user to other usersor objects, social-graph information, social-graph affinity, the searchhistory of the user, feedback from the user, the geographic location ofthe user, other relevant information about the user, or any combinationthereof. As an example and not by way of limitation, social-networkingsystem 160 may infer the user is interested in finding a restaurantbased on the time of day and information, such as for exampleuser-history, of the user. For example, social-networking system 160 mayrank cards 450 referencing restaurants more highly at a particular timeframe based at least in part on the user frequently checking-in atrestaurants at the particular time of day. As another example,social-networking system 160 may rank particular cards 450 more highlybased on the particular day of the week and information, such as forexample user-history, of the user. For example, social-networking system160 may rank cards 450 referencing [“Movies”] more highly on aparticular day of the week (e.g. Friday) based at least in part on theuser history (e.g. “check-ins”) with respect to movie theaters on theparticular day of the week. More information on determining the intentof a user may be found in U.S. patent application Ser. No. 13/776,469,filed 25 Feb. 2013, which is incorporated by reference. Although thisdisclosure describes inferring the intent of a user in a particularmanner, this disclosure contemplates inferring the intent of the user inany suitable manner.

FIG. 9 illustrates an example method 900 for ranking cards. The methodmay begin at step 910, where social-networking system 160 may access asocial graph 200 comprising a plurality of nodes and a plurality ofedges 206 connecting the nodes. The nodes may comprise a first user node202 and a plurality of second nodes (one or more user nodes 202, conceptnodes 204, or any combination thereof). At step 920, social-networkingsystem 160 may generate a card cluster that includes a number of cards.In particular embodiments, each card corresponds to a suggested querythat references a query-domain associated with the online social networkand zero or more query-filters. In particular embodiments, eachquery-filter references one or more nodes or one or more edges. At step930, social-networking system 160 may calculate a predicted CTR for eachcard in the card cluster based on one or more user-engagement factors.At step 940, social-networking system 160 may rank each of the cards inthe card cluster based on the predicted CTR. At step 950,social-networking system 160 may send the card cluster to the first userfor display on a page currently accessed by the first user. Inparticular embodiments, the cards of the card cluster may be orderedbased on the ranking associated with the cards. Particular embodimentsmay repeat one or more steps of the method of FIG. 9, where appropriate.Although this disclosure describes and illustrates particular steps ofthe method of FIG. 9 as occurring in a particular order, this disclosurecontemplates any suitable steps of the method of FIG. 9 occurring in anysuitable order. Moreover, although this disclosure describes andillustrates an example method for ranking cards including the particularsteps of the method of FIG. 9, this disclosure contemplates any suitablemethod for ranking cards including any suitable steps, which may includeall, some, or none of the steps of the method of FIG. 9, whereappropriate. Furthermore, although this disclosure describes andillustrates particular components, devices, or systems carrying outparticular steps of the method of FIG. 9, this disclosure contemplatesany suitable combination of any suitable components, devices, or systemscarrying out any suitable steps of the method of FIG. 9.

FIG. 10 illustrates an example grouping of example card clusters 530.Although FIG. 10 illustrates a particular configuration of card clusters530 with a particular configuration of cards, this disclosurecontemplates any suitable configuration of card cluster with anysuitable configuration of cards. In particular embodiments,social-networking system 160 may rank cards 450 (each card 450 showingone or more search results 550) of a plurality of card cluster 530, andrank each card cluster 530, such that the most interesting cards 450 arepresented to the user. As illustrated in the example of FIG. 10, cardclusters 530A-C may be displayed in a vertical arrangement on a UI orpage. As described above, each card cluster 530 may reference aparticular query-domain and zero or more query-filters. In particularembodiments, card clusters 530A-C may be ranked from highest to lowestinferred relevance to the user, as described below, and displayed indescending order. As an example and not by way of limitation, a firstcard cluster 530A may include cards 450 that reference the[“Restaurant”] query-domain, a second card cluster 530B may includecards 450 that reference the [“Movie”] query-domain, and a third cardcluster 530C may include cards 450 that reference the [“Landmarks”]query-domain. In particular embodiments, the user may navigate betweencard clusters 530A-C by performing a “scroll” touch gesture.

As illustrated in the example of FIG. 10, card cluster 530A (whichincludes cards 450A-C) referencing a particular query-domain withdifferent query-filters may be arranged in a horizontal arrangement. Inparticular embodiments, scrolling horizontally through card cluster 530Anavigates between cards 450A-C with cards 450 referencing the samequery-domain and different filter values. As an example and not by oflimitation, card clusters 530A may include cards that each reference the[“Restaurant”] query-domain and different query-filters. For example, afirst card 450A may reference the query-filter [“Cuisine”], a secondcard 450B may reference the query-filter [“Rating”], and a third card450C may reference the query-filter [“Location”]. As another example,card cluster 530A may include cards 450 that each reference the[“Restaurant”] query-domain and the [“Cuisine”] query-filter havingdifferent filter values. For example, a first card 450A may referencethe filter value [“Chinese”], a second card 450B may reference thefilter value [“Indian”], and a third card 450C my reference the filtervalue [“Ethiopian”].

In particular embodiments, social-networking system 160 may rank cardclusters 530 based at least in part on the predicted CTR of cards 450 ofeach card cluster 530. Furthermore, cards 450 in card clusters 530 maybe ranked on a similar basis. As an example and not by way oflimitation, social-networking system 160 may rank each card cluster530A-C based at least in part on value of the predicted CTR of card 450that has the highest predicted CTR of each card cluster 530A-C. Forexample, a first card cluster 530A may include cards 450 that referencethe [“Restaurant”] query-domain, a second card cluster 530B may includecards 450 that reference the [“Movie”] query-domain, and a third cardcluster 530C may include cards 450 that reference the [“Landmarks”]query-domain, based on a ranking of card 450 that has the highestpredicted CTR for each card cluster 530A-C. As another example,social-networking system 160 may rank card clusters 530 based at leastin part on the average CTR of all cards of the particular query-domain.As another example, card cluster 530A-C of each query-domain may beranked on a weighted average of the predicted CTR of cards 450 of theparticular query-domain. In particular embodiment, lower predicted CTRvalue cards 450 may be added to card cluster 530 for a smoothertransitions between cards 450 of one or more card clusters 530. Althoughthis disclosure describes ranking of card clusters of query-domains in aparticular manner, this disclosure contemplates ranking of card clustersof query-domains in any suitable manner.

Grouping Cards with Suggested Queries

In particular embodiments, social-networking system 160 may group cards450 into card clusters 530. Cards 450 may be grouped into card clusters530 based on a calculated card-affinity with respect to each card 450.Herein, reference to a card-affinity may refer to a metric to representthe strength of a relationship between two or more cards 450. Herein,reference to a card-affinity threshold may refer to a minimum value ofcard-affinity between cards 450 grouped into a card cluster 530. As anexample and not by way of limitation, social-networking system 160 maygenerate one or more card clusters 530 based calculating a card affinitybased at least in part on query-domains or query-filters of cards 450.As another example, social-networking system 160 may propagate one ormore query-filters to subsequent cards 450 of a card cluster 530 basedon a user interaction. Although this disclosure describes generatingcard clusters in a particular manner, this disclosure contemplatesgenerating card clusters in any suitable manner.

In particular embodiments, social-networking system 160 may consider oneor more affinities when calculating the card-affinity of cards 450 withrespect to the other cards 450. Example affinities that may be used tocalculate the card-affinity may include query-domain to query-domain,query-filter to query-filter, filter value to filter value to filtervalue, or any combination thereof. As an example and not by way oflimitation, social-networking system 160 may calculate the card affinitybased at least in part on signals provided by substantially all users ofsocial-networking system 160. As another example, social-networkingsystem 160 may calculate the card affinity based at least in part onfeatures of objects, social-graph affinity of the user, demographicinformation of the user, activities of “friends”, or any combinationthereof. Although this disclosure describes calculating a card affinityin a particular manner, this disclosure contemplates card affinity inany suitable manner.

In particular embodiments, social-networking system 160 may calculatethe card-affinity based at least in part on calculating an affinity ofcards corresponding to the different query-domain and same query-filtersor associated filter values. As an example and not by way of limitation,social-networking system 160 may determine cards 450 corresponding tothe [“Books”], [“TV Shows”], and [“Movies”] query-domains have a highaffinity to each other in the [“Genre”] query-filter and [“Sci-Fi”]filter value based at least in part on the activity of other users ofsocial-networking system 160, that have at least some overlappingdemographic data as the user, with respect to objects corresponding tothe [“Genre”] query-filter and [“Sci-Fi”] filter value. In particularembodiments, social-networking system 160 may calculate thecard-affinity based at least in part on calculating an affinity of cardscorresponding to the same query-domain and different query-filters orassociated filter values. As an example and not by way of limitation,social-networking system 160 may determine cards 450 corresponding tothe [“Cuisine”] query-filter have a high affinity to each other in the[“Restaurant”] query-domain based at least in part on the user historyof the user on social-networking system 160 with respect to objectsreferencing the [“Cuisine”] query-filter, such as for example, the user“liking” or “checking-in,=” at restaurants of a particular cuisine. Asanother example, social-networking system 160 may calculate cards 450corresponding to the [“Rating”] query-filter have a high affinity toeach other in the [“Restaurant”] query-domain based at least in part onthe user history of the user on social-networking system 160 withrespect to objects corresponding to the [“Rating”] query-filter, such asfor example, the “liking” or “checking-in” at restaurants of aparticular rating.

In particular embodiments, social-networking system 160 may update thecard affinity calculations based at least in part on user interactionswith cards 450. As described above, social-networking system 160 maymodify one or more cards 450 of a card cluster 530 based on userinteractions with displayed cards 450 of card cluster 530. As an exampleand not by way of limitation, social-networking system 160 may apply aparticular query-filter and associated filter values to cards 450 basedon interactions of the user. For example, a first card cluster 530A mayinclude cards 450 that reference the [“Restaurant”] query-domain withquery-filter [“Rating”] and associated filter value [“4 Star”], suchthat the first card cluster 530A includes cards that reference 4 starrestaurants with any type of cuisine. A second card cluster 530B mayinclude cards 450 that reference the [“Restaurant”] query-domain withquery-filter [“Rating”] and associated filter value [“3 Star”].Furthermore, if the user selects, such as for example by swiping a card450 of first card cluster 530A, referencing a particular filter value(e.g. [“Chinese”]) for a particular query-filter (e.g. [“Cuisine”]),then subsequent cards 450 of first card cluster 530A may be modified toreference Chinese restaurants with a 4-star rating and the cards of thesecond card cluster 530B may be modified to reference Chineserestaurants with a 3-star rating. In particular embodiments,social-networking system 160 may apply one or more previously selectedquery-filters or filter values to card cluster 530 that are displayed ata later time. As an example and not by way of limitation, based on theuser history of the user interacting with cards 450 referencing aparticular query-filter (e.g. [“Cuisine”]), social-networking system 160may calculate a higher card-affinity for cards 450 with the samecuisine. Furthermore, subsequent card clusters 530 may be automaticallyinclude cards 450 grouped by the query-filter (e.g. [“Cuisine”]).Although this disclosure describes modifying the card-affinity in aparticular manner, this disclosure contemplates modifying thecard-affinity in any suitable manner.

FIG. 11 illustrates an example method 1100 for generating a cardcluster. The method may begin at step 1110, where social-networkingsystem 160 may access a social graph 200 comprising a plurality of nodesand a plurality of edges 206 connecting the nodes. The nodes maycomprise a first user node 202 and a plurality of second nodes (one ormore user nodes 202, concepts nodes 204, or any combination thereof). Atstep 1120, social-networking system 160 may generate a number of cards.In particular embodiments, each card may include a suggested query thatreferences a query-domain associated with the online social network andzero or more query-filters for the query-domain. In particularembodiments, each query-filter may reference one or more nodes or one ormore edges. At step 1130, social-networking system 160 may calculate acard-affinity for each card of the plurality of cards with respect tothe other cards of the plurality of cards. At step 1140,social-networking system 160 may generate one or more card clusters fromthe plurality of cards, each card cluster may include one or more cardsthat each have a card-affinity with respect to the other cards in thecard cluster that is greater than a threshold card-affinity. At step1150, social-networking system 160 may send one or more card clusters tothe first user for display on a page currently accessed by the firstuser. Particular embodiments may repeat one or more steps of the methodof FIG. 11, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 11 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 11 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates an example method forgenerating a card cluster including the particular steps of the methodof FIG. 11, this disclosure contemplates any suitable method forgenerating a card cluster including any suitable steps, which mayinclude all, some, or none of the steps of the method of FIG. 11, whereappropriate. Furthermore, although this disclosure describes andillustrates particular components, devices, or systems carrying outparticular steps of the method of FIG. 11, this disclosure contemplatesany suitable combination of any suitable components, devices, or systemscarrying out any suitable steps of the method of FIG. 11.

Social Graph Affinity and Coefficient

In particular embodiments, social-networking system 160 may determinethe social-graph affinity (which may be referred to herein as“affinity”) of various social-graph entities for each other. Affinitymay represent the strength of a relationship or level of interestbetween particular objects associated with the online social network,such as users, concepts, content, actions, advertisements, other objectsassociated with the online social network, or any suitable combinationthereof. Affinity may also be determined with respect to objectsassociated with third-party systems 170 or other suitable systems. Anoverall affinity for a social-graph entity for each user, subjectmatter, or type of content may be established. The overall affinity maychange based on continued monitoring of the actions or relationshipsassociated with the social-graph entity. Although this disclosuredescribes determining particular affinities in a particular manner, thisdisclosure contemplates determining any suitable affinities in anysuitable manner.

In particular embodiments, social-networking system 160 may measure orquantify social-graph affinity using an affinity coefficient (which maybe referred to herein as “coefficient”). The coefficient may representor quantify the strength of a relationship between particular objectsassociated with the online social network. The coefficient may alsorepresent a probability or function that measures a predictedprobability that a user will perform a particular action based on theuser's interest in the action (or may be used as an input to calculatesuch a probability). In this way, a user's future actions may bepredicted based on the user's prior actions, where the coefficient maybe calculated at least in part on a history of the user's actions. Thispredicted probability represented by the coefficient may be differentthan the probabilities used to score search queries or cards discussedpreviously, may be used as a factor in calculating those probabilities,or may be directly used for those probabilities, as appropriate.Coefficients may be used to predict any number of actions, which may bewithin or outside of the online social network. As an example and not byway of limitation, these actions may include various types ofcommunications, such as sending messages, posting content, or commentingon content; various types of a observation actions, such as accessing orviewing profile pages, media, or other suitable content; various typesof coincidence information about two or more social-graph entities, suchas being in the same group, tagged in the same photograph, checked-in atthe same location, or attending the same event; or other suitableactions. Although this disclosure describes measuring affinity in aparticular manner, this disclosure contemplates measuring affinity inany suitable manner.

In particular embodiments, social-networking system 160 may use avariety of factors to calculate a coefficient. These factors mayinclude, for example, user actions, types of relationships betweenobjects, location information, other suitable factors, or anycombination thereof. In particular embodiments, different factors may beweighted differently when calculating the coefficient. The weights foreach factor may be static or the weights may change according to, forexample, the user, the type of relationship, the type of action, theuser's location, and so forth. Ratings for the factors may be combinedaccording to their weights to determine an overall coefficient for theuser. As an example and not by way of limitation, particular useractions may be assigned both a rating and a weight while a relationshipassociated with the particular user action is assigned a rating and acorrelating weight (e.g., so the weights total 100%). To calculate thecoefficient of a user towards a particular object, the rating assignedto the user's actions may comprise, for example, 60% of the overallcoefficient, while the relationship between the user and the object maycomprise 40% of the overall coefficient. In particular embodiments, thesocial-networking system 160 may consider a variety of variables whendetermining weights for various factors used to calculate a coefficient,such as, for example, the time since information was accessed, decayfactors, frequency of access, relationship to information orrelationship to the object about which information was accessed,relationship to social-graph entities connected to the object, short- orlong-term averages of user actions, user feedback, other suitablevariables, or any combination thereof. As an example and not by way oflimitation, a coefficient may include a decay factor that causes thestrength of the signal provided by particular actions to decay withtime, such that more recent actions are more relevant when calculatingthe coefficient. The ratings and weights may be continuously updatedbased on continued tracking of the actions upon which the coefficient isbased. Any type of process or algorithm may be employed for assigning,combining, averaging, and so forth the ratings for each factor and theweights assigned to the factors. In particular embodiments,social-networking system 160 may determine coefficients usingmachine-learning algorithms trained on historical actions and past userresponses, or data farmed from users by exposing them to various optionsand measuring responses. Although this disclosure describes calculatingcoefficients in a particular manner, this disclosure contemplatescalculating coefficients in any suitable manner.

In particular embodiments, social-networking system 160 may calculate acoefficient based on a user's actions. Social-networking system 160 maymonitor such actions on the online social network, on a third-partysystem 170, on other suitable systems, or any combination thereof. Anysuitable type of user actions may be tracked or monitored. Typical useractions include viewing profile pages, creating or posting content,interacting with content, tagging or being tagged in images, joininggroups, listing and confirming attendance at events, checking-in atlocations, liking particular pages, creating pages, and performing othertasks that facilitate social action. In particular embodiments,social-networking system 160 may calculate a coefficient based on theuser's actions with particular types of content. The content may beassociated with the online social network, a third-party system 170, oranother suitable system. The content may include users, profile pages,posts, news stories, headlines, instant messages, chat roomconversations, emails, advertisements, pictures, video, music, othersuitable objects, or any combination thereof. Social-networking system160 may analyze a user's actions to determine whether one or more of theactions indicate an affinity for subject matter, content, other users,and so forth. As an example and not by way of limitation, if a user maymake frequently posts content related to “coffee” or variants thereof,social-networking system 160 may determine the user has a highcoefficient with respect to the concept “coffee”. Particular actions ortypes of actions may be assigned a higher weight and/or rating thanother actions, which may affect the overall calculated coefficient. Asan example and not by way of limitation, if a first user emails a seconduser, the weight or the rating for the action may be higher than if thefirst user simply views the user-profile page for the second user.

In particular embodiments, social-networking system 160 may calculate acoefficient based on the type of relationship between particularobjects. Referencing the social graph 200, social-networking system 160may analyze the number and/or type of edges 206 connecting particularuser nodes 202 and concept nodes 204 when calculating a coefficient. Asan example and not by way of limitation, user nodes 202 that areconnected by a spouse-type edge (representing that the two users aremarried) may be assigned a higher coefficient than a user nodes 202 thatare connected by a friend-type edge. In other words, depending upon theweights assigned to the actions and relationships for the particularuser, the overall affinity may be determined to be higher for contentabout the user's spouse than for content about the user's friend. Inparticular embodiments, the relationships a user has with another objectmay affect the weights and/or the ratings of the user's actions withrespect to calculating the coefficient for that object. As an exampleand not by way of limitation, if a user is tagged in first photo, butmerely likes a second photo, social-networking system 160 may determinethat the user has a higher coefficient with respect to the first photothan the second photo because having a tagged-in-type relationship withcontent may be assigned a higher weight and/or rating than having alike-type relationship with content. In particular embodiments,social-networking system 160 may calculate a coefficient for a firstuser based on the relationship one or more second users have with aparticular object. In other words, the connections and coefficientsother users have with an object may affect the first user's coefficientfor the object. As an example and not by way of limitation, if a firstuser is connected to or has a high coefficient for one or more secondusers, and those second users are connected to or have a highcoefficient for a particular object, social-networking system 160 maydetermine that the first user should also have a relatively highcoefficient for the particular object. In particular embodiments, thecoefficient may be based on the degree of separation between particularobjects. The lower coefficient may represent the decreasing likelihoodthat the first user will share an interest in content objects of theuser that is indirectly connected to the first user in the social graph200. As an example and not by way of limitation, social-graph entitiesthat are closer in the social graph 200 (i.e., fewer degrees ofseparation) may have a higher coefficient than entities that are furtherapart in the social graph 200.

In particular embodiments, social-networking system 160 may calculate acoefficient based on location information. Objects that aregeographically closer to each other may be considered to be more relatedor of more interest to each other than more distant objects. Inparticular embodiments, the coefficient of a user towards a particularobject may be based on the proximity of the object's location to acurrent location associated with the user (or the location of a clientsystem 130 of the user). A first user may be more interested in otherusers or concepts that are closer to the first user. As an example andnot by way of limitation, if a user is one mile from an airport and twomiles from a gas station, social-networking system 160 may determinethat the user has a higher coefficient for the airport than the gasstation based on the proximity of the airport to the user. In particularembodiments, the coefficient of a user towards one or more objects maybe based on the geographic proximity of the objects (e.g., to the userand/or each other) and the user's interactions with the objects. As anexample and not by way of limitation, a pair of geo-locations that aresequentially visited by the user, such as for example, a restaurant anda nearby movie theater may be considered to be of more interest to eachother than unrelated geo-locations.

In particular embodiments, social-networking system 160 may performparticular actions with respect to a user based on coefficientinformation. Coefficients may be used to predict whether a user willperform a particular action based on the user's interest in the action.A coefficient may be used when generating or presenting any type ofobjects to a user, such as advertisements, search results, news stories,media, messages, notifications, or other suitable objects. Thecoefficient may also be utilized to rank and order such objects, asappropriate. In this way, social-networking system 160 may provideinformation that is relevant to user's interests and currentcircumstances, increasing the likelihood that they will find suchinformation of interest. In particular embodiments, social-networkingsystem 160 may generate content based on coefficient information.Content objects may be provided or selected based on coefficientsspecific to a user. As an example and not by way of limitation, thecoefficient may be used to generate media for the user, where the usermay be presented with media for which the user has a high overallcoefficient with respect to the media object. As another example and notby way of limitation, the coefficient may be used to generateadvertisements for the user, where the user may be presented withadvertisements for which the user has a high overall coefficient withrespect to the advertised object. In particular embodiments,social-networking system 160 may generate search results based oncoefficient information. Search results for a particular user may bescored or ranked based on the coefficient associated with the searchresults with respect to the querying user. As an example and not by wayof limitation, search results corresponding to objects with highercoefficients may be ranked higher on a search-results page than resultscorresponding to objects having lower coefficients.

In particular embodiments, social-networking system 160 may calculate acoefficient in response to a request for a coefficient from a particularsystem or process. To predict the likely actions a user may take (or maybe the subject of) in a given situation, any process may request acalculated coefficient for a user. The request may also include a set ofweights to use for various factors used to calculate the coefficient.This request may come from a process running on the online socialnetwork, from a third-party system 170 (e.g., via an API or othercommunication channel), or from another suitable system. In response tothe request, social-networking system 160 may calculate the coefficient(or access the coefficient information if it has previously beencalculated and stored). In particular embodiments, social-networkingsystem 160 may measure an affinity with respect to a particular process.Different processes (both internal and external to the online socialnetwork) may request a coefficient for a particular object or set ofobjects. Social-networking system 160 may provide a measure of affinitythat is relevant to the particular process that requested the measure ofaffinity. In this way, each process receives a measure of affinity thatis tailored for the different context in which the process will use themeasure of affinity.

In connection with social-graph affinity and affinity coefficients,particular embodiments may utilize one or more systems, components,elements, functions, methods, operations, or steps disclosed in U.S.patent application Ser. No. 11/503,093, filed 11 Aug. 2006, U.S. patentapplication Ser. No. 12/977,027, filed 22 Dec. 2010, U.S. patentapplication Ser. No. 12/978,265, filed 23 Dec. 2010, and U.S. patentapplication Ser. No. 13/632,869, filed 1 Oct. 2012, each of which isincorporated by reference.

Advertising

In particular embodiments, an advertisement may be text (which may beHTML-linked), one or more images (which may be HTML-linked), one or morevideos, audio, one or more ADOBE FLASH files, a suitable combination ofthese, or any other suitable advertisement in any suitable digitalformat presented on one or more pages, in one or more e-mails, or inconnection with search results requested by a user). In addition or asan alternative, an advertisement may be one or more sponsored stories(e.g. a newsfeed or ticker item on social-networking system 160), or maybe one or more sponsored queries (e.g., a suggested query referencing aparticular object). A sponsored story or query may include a referenceto a social action by a user (such as “liking” a page, “liking” orcommenting on a post on a page, RSVPing to an event associated with apage, voting on a question posted on a page, checking in to a place,using an application or playing a game, or “liking” or sharing awebsite) that an advertiser promotes by, for example, having the socialaction presented within a pre-determined area of a profile page of auser or other page, presented with additional information associatedwith the advertiser, bumped up or otherwise highlighted within newsfeeds or tickers of other users, or otherwise promoted. The advertisermay pay to have the social action promoted.

In particular embodiments, an advertisement may be requested for displaywithin social-networking-system pages, third-party webpages, or otherpages. An advertisement may be displayed in a dedicated portion of apage, such as in a banner area at the top of the page, in a column atthe side of the page, in a GUI of the page, in a pop-up window, in adrop-down menu, in an input field of the page, over the top of contentof the page, or elsewhere with respect to the page. In addition or as analternative, an advertisement may be displayed within an application. Anadvertisement may be displayed within dedicated pages, requiring theuser to interact with or watch the advertisement before the user mayaccess a page or utilize an application. The user may, for example viewthe advertisement through a web browser.

A user may interact with an advertisement in any suitable manner. Theuser may click or otherwise select the advertisement. By selecting theadvertisement, the user may be directed to (or a browser or otherapplication being used by the user) a page associated with theadvertisement. At the page associated with the advertisement, the usermay take additional actions, such as purchasing a product or serviceassociated with the advertisement, receiving information associated withthe advertisement, or subscribing to a newsletter associated with theadvertisement. An advertisement with audio or video may be played byselecting a component of the advertisement (like a “play button”).Alternatively, by selecting the advertisement, the social-networkingsystem 160 may execute or modify a particular action of the user. As anexample and not by way of limitation, advertisements may be includedamong the search results of a search-results page, where sponsoredcontent is promoted over non-sponsored content. As another example andnot by way of limitation, advertisements may be included among suggestedsearch queries, where suggested queries that reference the advertiser orits content/products may be promoted over non-sponsored queries.

An advertisement may include social-networking-system functionality thata user may interact with. For example, an advertisement may enable auser to “like” or otherwise endorse the advertisement by selecting anicon or link associated with endorsement. As another example, anadvertisement may enable a user to search (e.g., by executing a query)for content related to the advertiser. Similarly, a user may share theadvertisement with another user (e.g. through social-networking system160) or RSVP (e.g. through social-networking system 160) to an eventassociated with the advertisement. In addition or as an alternative, anadvertisement may include social-networking-system context directed tothe user. For example, an advertisement may display information about afriend of the user within social-networking system 160 who has taken anaction associated with the subject matter of the advertisement. As anexample and not by way of limitation, a particular place or object thatan advertiser wants to promote may be boosted or promoted inside a card450 of card cluster 530 or as a single item card 450 for the user intheir ranked cards. A ranking of promoted card 450 may take into accounta dynamic auction to offset the engagement “hit” incurred for displayinganother card 450 that is potentially less engaging to users. As anotherexample, a sponsored card 450, not just a sponsored item may bedisplayed to the user. For example, a NETFLIX card 450 may correspond toonly content available on NETFLIX or a STARBUCKS card 450 may be a“Starbucks Nearby” card 450 that may be displayed ahead of cards 450corresponding to “Cafes Nearby.”

Systems and Methods

FIG. 12 illustrates an example computer system 1200. In particularembodiments, one or more computer systems 1200 perform one or more stepsof one or more methods described or illustrated herein. In particularembodiments, one or more computer systems 1200 provide functionalitydescribed or illustrated herein. In particular embodiments, softwarerunning on one or more computer systems 1200 performs one or more stepsof one or more methods described or illustrated herein or providesfunctionality described or illustrated herein. Particular embodimentsinclude one or more portions of one or more computer systems 1200.Herein, reference to a computer system may encompass a computing device,and vice versa, where appropriate. Moreover, reference to a computersystem may encompass one or more computer systems, where appropriate.

This disclosure contemplates any suitable number of computer systems1200. This disclosure contemplates computer system 1200 taking anysuitable physical form. As example and not by way of limitation,computer system 1200 may be an embedded computer system, asystem-on-chip (SOC), a single-board computer system (SBC) (such as, forexample, a computer-on-module (COM) or system-on-module (SOM)), adesktop computer system, a laptop or notebook computer system, aninteractive kiosk, a mainframe, a mesh of computer systems, a mobiletelephone, a personal digital assistant (PDA), a server, a tabletcomputer system, or a combination of two or more of these. Whereappropriate, computer system 1200 may include one or more computersystems 1200; be unitary or distributed; span multiple locations; spanmultiple machines; span multiple data centers; or reside in a cloud,which may include one or more cloud components in one or more networks.Where appropriate, one or more computer systems 1200 may perform withoutsubstantial spatial or temporal limitation one or more steps of one ormore methods described or illustrated herein. As an example and not byway of limitation, one or more computer systems 1200 may perform in realtime or in batch mode one or more steps of one or more methods describedor illustrated herein. One or more computer systems 1200 may perform atdifferent times or at different locations one or more steps of one ormore methods described or illustrated herein, where appropriate.

In particular embodiments, computer system 1200 includes a processor1202, memory 1204, storage 1206, an input/output (I/O) interface 1208, acommunication interface 1210, and a bus 1212. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 1202 includes hardware forexecuting instructions, such as those making up a computer program. Asan example and not by way of limitation, to execute instructions,processor 1202 may retrieve (or fetch) the instructions from an internalregister, an internal cache, memory 1204, or storage 1206; decode andexecute them; and then write one or more results to an internalregister, an internal cache, memory 1204, or storage 1206. In particularembodiments, processor 1202 may include one or more internal caches fordata, instructions, or addresses. This disclosure contemplates processor1202 including any suitable number of any suitable internal caches,where appropriate. As an example and not by way of limitation, processor1202 may include one or more instruction caches, one or more datacaches, and one or more translation lookaside buffers (TLBs).Instructions in the instruction caches may be copies of instructions inmemory 1204 or storage 1206, and the instruction caches may speed upretrieval of those instructions by processor 1202. Data in the datacaches may be copies of data in memory 1204 or storage 1206 forinstructions executing at processor 1202 to operate on; the results ofprevious instructions executed at processor 1202 for access bysubsequent instructions executing at processor 1202 or for writing tomemory 1204 or storage 1206; or other suitable data. The data caches mayspeed up read or write operations by processor 1202. The TLBs may speedup virtual-address translation for processor 1202. In particularembodiments, processor 1202 may include one or more internal registersfor data, instructions, or addresses. This disclosure contemplatesprocessor 1202 including any suitable number of any suitable internalregisters, where appropriate. Where appropriate, processor 1202 mayinclude one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 1202. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

In particular embodiments, memory 1204 includes main memory for storinginstructions for processor 1202 to execute or data for processor 1202 tooperate on. As an example and not by way of limitation, computer system1200 may load instructions from storage 1206 or another source (such as,for example, another computer system 1200) to memory 1204. Processor1202 may then load the instructions from memory 1204 to an internalregister or internal cache. To execute the instructions, processor 1202may retrieve the instructions from the internal register or internalcache and decode them. During or after execution of the instructions,processor 1202 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor1202 may then write one or more of those results to memory 1204. Inparticular embodiments, processor 1202 executes only instructions in oneor more internal registers or internal caches or in memory 1204 (asopposed to storage 1206 or elsewhere) and operates only on data in oneor more internal registers or internal caches or in memory 1204 (asopposed to storage 1206 or elsewhere). One or more memory buses (whichmay each include an address bus and a data bus) may couple processor1202 to memory 1204. Bus 1212 may include one or more memory buses, asdescribed below. In particular embodiments, one or more memorymanagement units (MMUs) reside between processor 1202 and memory 1204and facilitate accesses to memory 1204 requested by processor 1202. Inparticular embodiments, memory 1204 includes random access memory (RAM).This RAM may be volatile memory, where appropriate Where appropriate,this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, whereappropriate, this RAM may be single-ported or multi-ported RAM. Thisdisclosure contemplates any suitable RAM. Memory 1204 may include one ormore memories 1204, where appropriate. Although this disclosuredescribes and illustrates particular memory, this disclosurecontemplates any suitable memory.

In particular embodiments, storage 1206 includes mass storage for dataor instructions. As an example and not by way of limitation, storage1206 may include a hard disk drive (HDD), a floppy disk drive, flashmemory, an optical disc, a magneto-optical disc, magnetic tape, or aUniversal Serial Bus (USB) drive or a combination of two or more ofthese. Storage 1206 may include removable or non-removable (or fixed)media, where appropriate. Storage 1206 may be internal or external tocomputer system 1200, where appropriate. In particular embodiments,storage 1206 is non-volatile, solid-state memory. In particularembodiments, storage 1206 includes read-only memory (ROM). Whereappropriate, this ROM may be mask-programmed ROM, programmable ROM(PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM),electrically alterable ROM (EAROM), or flash memory or a combination oftwo or more of these. This disclosure contemplates mass storage 1206taking any suitable physical form. Storage 1206 may include one or morestorage control units facilitating communication between processor 1202and storage 1206, where appropriate. Where appropriate, storage 1206 mayinclude one or more storages 1206. Although this disclosure describesand illustrates particular storage, this disclosure contemplates anysuitable storage.

In particular embodiments, I/O interface 1208 includes hardware,software, or both, providing one or more interfaces for communicationbetween computer system 1200 and one or more I/O devices. Computersystem 1200 may include one or more of these I/O devices, whereappropriate. One or more of these I/O devices may enable communicationbetween a person and computer system 1200. As an example and not by wayof limitation, an I/O device may include a keyboard, keypad, microphone,monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet,touch screen, trackball, video camera, another suitable I/O device or acombination of two or more of these. An I/O device may include one ormore sensors. This disclosure contemplates any suitable I/O devices andany suitable I/O interfaces 1208 for them. Where appropriate, I/Ointerface 1208 may include one or more device or software driversenabling processor 1202 to drive one or more of these I/O devices. I/Ointerface 1208 may include one or more I/O interfaces 1208, whereappropriate. Although this disclosure describes and illustrates aparticular I/O interface, this disclosure contemplates any suitable I/Ointerface.

In particular embodiments, communication interface 1210 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 1200 and one or more other computer systems 1200 or oneor more networks. As an example and not by way of limitation,communication interface 1210 may include a network interface controller(NIC) or network adapter for communicating with an Ethernet or otherwire-based network or a wireless NIC (WNIC) or wireless adapter forcommunicating with a wireless network, such as a WI-FI network. Thisdisclosure contemplates any suitable network and any suitablecommunication interface 1210 for it. As an example and not by way oflimitation, computer system 1200 may communicate with an ad hoc network,a personal area network (PAN), a local area network (LAN), a wide areanetwork (WAN), a metropolitan area network (MAN), or one or moreportions of the Internet or a combination of two or more of these. Oneor more portions of one or more of these networks may be wired orwireless. As an example, computer system 1200 may communicate with awireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FInetwork, a WI-MAX network, a cellular telephone network (such as, forexample, a Global System for Mobile Communications (GSM) network), orother suitable wireless network or a combination of two or more ofthese. Computer system 1200 may include any suitable communicationinterface 1210 for any of these networks, where appropriate.Communication interface 1210 may include one or more communicationinterfaces 1210, where appropriate. Although this disclosure describesand illustrates a particular communication interface, this disclosurecontemplates any suitable communication interface.

In particular embodiments, bus 1212 includes hardware, software, or bothcoupling components of computer system 1200 to each other. As an exampleand not by way of limitation, bus 1212 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, aPCI-Express (PCIe) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 1212may include one or more buses 1212, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other integrated circuits(ICs) (such, as for example, field-programmable gate arrays (FPGAs) orapplication-specific ICs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs),RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Miscellaneous

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,feature, functions, operations, or steps, any of these embodiments mayinclude any combination or permutation of any of the components,elements, features, functions, operations, or steps described orillustrated anywhere herein that a person having ordinary skill in theart would comprehend. Furthermore, reference in the appended claims toan apparatus or system or a component of an apparatus or system beingadapted to, arranged to, capable of, configured to, enabled to, operableto, or operative to perform a particular function encompasses thatapparatus, system, component, whether or not it or that particularfunction is activated, turned on, or unlocked, as long as thatapparatus, system, or component is so adapted, arranged, capable,configured, enabled, operable, or operative.

What is claimed is:
 1. A method comprising, by a computing device:receiving, from a client system of a first user, an input from the firstuser indicating a query-domain and one or more query-filters; generatinga card cluster comprising a plurality of cards referencing a pluralityof objects corresponding to the indicated query-domain and one or morequery-filters; ranking the plurality of cards based on one or moreuser-engagement factors; and sending, to the client system in responseto the input from the first user, instructions for displaying the cardcluster to the first user, the cards of the card cluster being orderedbased on the rankings associated with the cards.
 2. The method of claim1, wherein each card comprises a suggested search query comprising aplurality of terms referencing the indicated query-domain and one ormore query-filters, and wherein the query-filters reference one or moreobjects and one or more object attributes of the one or more objects. 3.The method of claim 2, wherein each card further comprises one or moresearch results corresponding to the suggested search query, each searchresult referencing an object matching the suggested search query of thecard and being within the indicated query-domain, and wherein the objectcorresponding to the search result matches each of the indicated one ormore query-filters.
 4. The method of claim 1, further comprising:accessing a social graph comprising a plurality of nodes and a pluralityof edges connecting the nodes, each of the edges between two of thenodes representing a relationship between the two nodes and establishinga single degree of separation between them, the nodes comprising: afirst node corresponding to a first user; and a plurality of secondnodes corresponding to a plurality of objects, respectively.
 5. Themethod of claim 4, wherein each query-filter references one or morenodes of the plurality of nodes or one or more edges of the plurality ofedges.
 6. The method of claim 4, wherein each search result references asecond node of the plurality of second nodes matching indicatedquery-domain and one or more query-filters.
 7. The method of claim 4,wherein each card comprises a structured query comprising references toone or more nodes of the plurality of nodes and one or more edges of theplurality of edges.
 8. The method of claim 1, further comprisingcalculating a user-engagement score for each card of the plurality ofcards based on the one or more user-engagement factors, theuser-engagement score for each card measuring a probability the firstuser will engage with the card, wherein the ranking of each card isbased on the calculated user-engagement score.
 9. The method of claim 8,wherein the user-engagement factors comprise one or more of demographicinformation, current information, or social-graph information of thefirst user.
 10. The method of claim 8, wherein the user-engagementfactors comprise social-graph information of a second user in relationto one or more of the objects referenced by the respective card, thesecond user having at least a subset of demographic information incommon with demographic information of the first user.
 11. The method ofclaim 8, wherein the user-engagement factors comprise a social-graphaffinity of the first user with respect to one or more objectsreferenced by the respective card.
 12. The method of claim 1, furthercomprising: receiving an input from the first user applying a firstquery-filter to a particular card of the card cluster; and modifying thequery-filters on one or more other cards of the card cluster to applythe first query-filter to the one or more other cards.
 13. The method ofclaim 1, wherein each card of the card cluster comprises one or moreinteractive elements operable to apply or modify one or morequery-filters to respective card.
 14. The method of claim 1, wherein thecard cluster is operable to display a subsequent card to the first userin response to detecting an input from the first user corresponding to aswiping gesture of a previously displayed card of the card cluster, thesubsequent card having a same query-domain and one or more differentquery-filters as the previously displayed card.
 15. The method of claim1, wherein at least one of the cards of the card cluster references anobject selected based on a search history of the first user.
 16. Themethod of claim 1, further comprising: receiving, from the clientsystem, an input from the first user to access a card-stack interface.17. The method of claim 1, wherein the card cluster is displayed withina card-stack interface.
 18. The method of claim 17, wherein thecard-stack interface is displayed as a user interface of a nativeapplication installed on the client system.
 19. The method of claim 17,wherein the card-stack interface is displayed as a webpage accessed by abrowser client installed on the client system.
 20. The method of claim17, wherein the card-stack interface, in response to detecting an inputfrom the first user corresponding to a swiping gesture of a currentlydisplayed card of the card-stack interface, is operable to display asubsequent card to the first user, wherein the subsequent cardreferences one or more objects corresponding to a different query domainor one or more different query-filters from the currently displayedcard.
 21. The method of claim 1, wherein the query-filters comprisereferences to particular entities or references to particular meta-dataor object attributes.
 22. One or more computer-readable non-transitorystorage media embodying software that is operable when executed to:receive, from a client system of a first user, an input from the firstuser indicating a query-domain and one or more query-filters; generate acard cluster comprising a plurality of cards referencing a plurality ofobjects corresponding to the indicated query-domain and one or morequery-filters; rank the plurality of cards based on one or moreuser-engagement factors; and send, to the client system in response tothe input from the first user, instructions for displaying the cardcluster to the first user, the cards of the card cluster being orderedbased on the rankings associated with the cards.
 23. A systemcomprising: one or more processors; and a memory coupled to theprocessors comprising instructions executable by the processors, theprocessors operable when executing the instructions to: receive, from aclient system of a first user, an input from the first user indicating aquery-domain and one or more query-filters; generate a card clustercomprising a plurality of cards referencing a plurality of objectscorresponding to the indicated query-domain and one or morequery-filters; rank the plurality of cards based on one or moreuser-engagement factors; and send, to the client system in response tothe input from the first user, instructions for displaying the cardcluster to the first user, the cards of the card cluster being orderedbased on the rankings associated with the cards.